C++;MinGW-GCC代码块静态链接 我的C++程序,我想在我的代码块中与DIWW GCC编译器静态链接以下的DLL: libcurl-4.dll libeay32.dll ssleay32.dll

C++;MinGW-GCC代码块静态链接 我的C++程序,我想在我的代码块中与DIWW GCC编译器静态链接以下的DLL: libcurl-4.dll libeay32.dll ssleay32.dll,c++,gcc,mingw,codeblocks,static-linking,C++,Gcc,Mingw,Codeblocks,Static Linking,是的,我知道我不能静态链接这些DLL,因为它们是动态库。但是,我不知道如何链接静态库来克服上面提到的必需DLL 我已经尝试了很多建议,但是,我仍然无法让它发挥作用。目前,我只是用我的软件重新分发DLL,但是,我想实现发送1.exe文件 感谢您的帮助回答您可以使用库*.dll.a文件进行共享链接,使您的项目依赖于相应的.dll文件,也可以进行静态链接,在这种情况下,您的项目不需要额外的.dll文件 但是,共享链接的优点是,每个.dll文件都处理自己的依赖关系。使用静态链接,您不仅必须链接项目所依赖

是的,我知道我不能静态链接这些DLL,因为它们是动态库。但是,我不知道如何链接静态库来克服上面提到的必需DLL

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


感谢您的帮助回答

您可以使用
库*.dll.a
文件进行共享链接,使您的项目依赖于相应的
.dll
文件,也可以进行静态链接,在这种情况下,您的项目不需要额外的
.dll
文件

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

为了让事情变得更加困难,MinGW/MinGW-w64 GCC对指定静态库的顺序很挑剔

如果您在我们的系统上有静态库,并且它们附带了
.pc
文件,那么您可以使用类似于
pkg config--static--libs libcurl
的内容来列出您需要链接的静态库


您甚至可以在Code::Blocks项目的“构建选项”的“链接器设置”选项卡上的“其他链接器选项”中指定该命令,如果您用反引号括起来:`pkg config--static--libs libcurl`,前提是pkg config.exe位于编译器路径中(或在“Toolchain Executables”(编译器设置的“Toolchain Executables”选项卡)。

您需要重新编译cURL和OpenSSL以生成静态lib,这意味着最终将不会有.dll文件,只有.lib文件(它们将比您现在拥有的文件大得多).但是,关于OpenSSL,我不确定是否仍然支持OOTB构建静态库-您可能需要调整一些与构建相关的文件(Makefile、一些.bat文件…),而不是传递一个简单的参数进行配置。当然,您也可以将.dll作为资源嵌入可执行文件。@CristiFati”或者,你可以将.dll作为资源嵌入到你的可执行文件中。”-听起来这就是OP想要的,也许你可以扩展一下that@M.M:如果他/她确认它可以工作,我会写一个解决方案(因为它不适合在评论中)@CristiFati,我如何将DLL添加为资源?这会为我提供1.exe文件吗?如果是,请告诉我如何实现这一点。这是一篇关于资源的文章:。这是特定于Ms的。基本上,您将.DLL嵌入可执行文件中(是的,您只提供可执行文件),但在运行时,它会在一开始提取它们(这需要额外的代码)并继续它的工作。但是我没有检查如何(如果可能的话)从MinGW完成它(所以我可能说得太早了)。