Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Windows上带有Mingw的DLL依赖项_C++_Dll_Mingw_Cross Compiling_Autotools - Fatal编程技术网

C++ Windows上带有Mingw的DLL依赖项

C++ Windows上带有Mingw的DLL依赖项,c++,dll,mingw,cross-compiling,autotools,C++,Dll,Mingw,Cross Compiling,Autotools,我正在开发一个程序,它的构建系统使用autotools,在linux上编译得很好。为了构建windows,我正在尝试使用一个适用于windows的mingw交叉编译器。现在,当我在linux上编译并转到windows时,当然我缺少了一些默认情况下windows上未安装的dll。这会导致缺少dll错误。由于LGPL中的限制,我无法静态链接我的程序 所以我的问题是,在这种情况下,交叉编译的正确方法是什么?我觉得我需要将我的exe封装在一个安装程序中,该安装程序会自动解析并安装windows的dll依

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


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

最简单的事情可能是,如果你能将开发转移到windows机器上。但除此之外,您可以使用Wine在Linux机器上安装Windows Mingw。(IIRC WineTracks甚至为此设立了一个目标)这样,您就可以对windows上的问题有一种“感觉”。另一种选择可能是虚拟机中的Windows,但Wine应该适合开发环境


<>我也强烈建议你安装微软Visual C++。快速版本就可以了。MSVC++附带了许多工具,可以使您的生活更加轻松,如dll依赖项检查器等。另外一个优秀的信息来源是Mark Russinovich及其同事提供的工具

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