C ++ MinGW GCC CodeBlocks静态链接

时间:2017-05-29 19:47:44

标签: c++ gcc mingw codeblocks static-linking

对于我的C ++程序,我想将我的CodeBlocks设置中的以下dll与MinGW GCC编译器静态链接:

  • 的libcurl-4.dll
  • 的libeay32.dll
  • ssleay32.dll

是的,我知道我无法静态链接这些DLL,因为它们是动态库 。但是,我无法弄清楚如何链接静态库以克服上面提到的所需的dll。

我已经尝试了很多建议,但是我仍然无法让它发挥作用。目前我只是用我的软件重新分发DLL,但是我想实现发送1 .exe文件。

感谢您的有用答案

1 个答案:

答案 0 :(得分:0)

您要么使用 lib*.dll.a 文件进行共享链接,这使您的项目依赖于相应的 .dll 文件,或者您进行静态链接,在这种情况下,您的项目将不需要额外的 {{ 1}} 个文件。

但是,共享链接的优点是每个 .dll 文件都负责处理自己的依赖项。使用静态链接,您不仅必须链接项目所依赖的静态库,还必须链接它们所依赖的静态库,等等。

更麻烦的是,MinGW/MinGW-w64 GCC 对您指定静态库的顺序很挑剔。

如果您在我们的系统上有静态库并且它们带有 .dll 文件,您可以使用类似 .pc 的内容列出您需要链接的静态库。

如果您用反引号将其括起来,您甚至可以在 Code::Blocks 项目的“构建选项”的“链接器设置”选项卡上的“其他链接器选项”中指定该命令:pkg-config --static --libs libcurl,提供的 `pkg-config --static --libs libcurl` 位于编译器路径中(或在编译器设置的“工具链可执行文件”选项卡下的“附加路径”下指定的路径)。