在另一台计算机上启动使用MinGW编译的Windows应用程序时出现库链接错误

时间:2014-04-26 08:11:53

标签: c++ c windows linker shared-libraries

我编写了一个简单的HelloWorld控制台应用程序,并使用以下命令之一使用MinGW编译器在Windows 7上编译它:

gcc -Wall -pedantic Hello.c -o Hello.exe
g++ -Wall -pedantic Hello.cpp -o Hello.exe

然而,编译器将一些自己的动态库链接到应用程序中,当我将可执行文件复制到另一台没有安装MinGW的Windows 7计算机时,我发现了库错误。在Linux上,这个问题由包系统解决,它自动安装所有需要的库,但在Windows中你肯定不想告诉你的用户安装MinGW来运行你的程序。

所以我的问题是:如何正确链接所有库以及我还需要做些什么来使我的应用程序独立运行?

虽然我相信,这对所有Windows程序员来说都是一个根本问题,我一直无法在互联网上找到任何答案(也许我只是不知道如何搜索和搜索什么)。

2 个答案:

答案 0 :(得分:2)

在某个阶段,这是在常见问题解答中,但现在我似乎只在this page上找到它:

  

为什么我在运行程序时收到有关缺少libstdc ++ - 6.dll文件的错误?

     

默认情况下,GCC4动态链接到libgcc和libstdc ++库   这意味着你需要一份libgcc_s_dw2-1.dll和   libstdc ++ - 6.dll文件,用于运行使用GCC4版本构建的程序   (这些文件可以在MinGW \ bin目录中找到)。要删除这些DLL   依赖关系,通过静态链接库到您的应用程序   将“-static-libgcc -static-libstdc ++”添加到“额外链接”中   选项“在项目设置中。

试试这个,

g++ -static-libgcc -static-libstdc++ -Wall -pedantic Hello.cpp -o Hello.exe

答案 1 :(得分:0)

我不敢说使用我机器上安装的所有应用程序,很容易识别哪些是使用MinGW构建的。告诫标志是一个充满图书馆的文件夹。

检查您需要的库是否可分发,然后只需将它们包含在.exe目录中。

虽然您可能在用户的计算机上安装了其他应用程序,并且其中一些可能包含您需要的库,但您的应用程序很可能与它们不兼容。这就是为什么要求用户安装MinGW不太可能正常工作。