【问题标题】:DLL Dependencies with Mingw on Windows在 Windows 上使用 Mingw 的 DLL 依赖项
【发布时间】:2012-01-09 06:47:50
【问题描述】:

我正在开发一个程序,它使用 autotools 构建系统并在 linux 上编译得很好。为了构建 Windows,我试图让 mingw 交叉编译器为 Windows 工作。现在,当我在 linux 上编译并移至 windows 时,我当然会丢失一些默认情况下未安装在 windows 上的 dll。这会导致缺少 dll 错误。由于 LGPL 的限制,我无法静态链接我的程序。

所以我的问题是在这种情况下交叉编译的正确方法是什么?我觉得我需要将我的 exe 包装在一个安装程序中,该安装程序会自动解析并安装 Windows 的 dll 依赖项,但我无法找到解释如何执行此操作的内容。基本上我在考虑 yum/apt-get for windows。如何管理 Windows 上的 dll 依赖项?我是 linux 人,不是 windows 人,所以请多多包涵。

【问题讨论】:

  • 将 DLL 与 exe 放在同一文件夹中。您确实拥有 DLL 的重新分发权限吗?
  • 嗨,David,我确实拥有再分发权,但我对 a 的执行方式不太感兴趣,而对正确的执行方式更感兴趣。例如。我可以自己编译 dll 并制作一个小脚本包装器,将这些 dll 复制到某个地方,但那时我可能会重新发明轮子。是否有一个普遍接受的包装器/安装程序可以为我执行此操作并与自动工具构建过程集成?我一直找不到类似的东西......
  • 您可以使用 InnoSetup 之类的安装工具来生成安装程序。
  • 我使用find /usr -name '*libwinpthread*'(例如)然后检查路径并确保选择了正确的工具链和线程模型的结果,然后将其复制到本地目录。我正在考虑以某种方式完全自动化,这就是我正在研究这个问题的原因。如果我让它工作得相当好,我会发布一个答案。

标签: c++ dll mingw cross-compiling autotools


【解决方案1】:

如果您可以将您的开发转移到 Windows 机器上,那么最简单的事情可能就是。但除此之外,您可以使用 Wine 在您的 Linux 机器上安装 Windows-Mingw。 (IIRC winetricks 甚至有一个目标)这样你就可以对 Windows 上的问题有一个“感觉”。替代方案可能是虚拟机中的 Windows,但 Wine 对于开发环境应该没问题。

我还强烈建议您安装 Microsoft Visual C++。快递版本会很好。 MSVC++ 附带了许多工具,可以让您的生活变得更轻松,例如 dll 依赖检查器等。另一个极好的信息来源是 Mark Russinovich 的 Sysinternals 工具和他的 blog

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多