Visual Studio C ++将.exe + .dll转换为.exe

时间:2013-09-22 20:08:03

标签: c++ visual-studio-2010 dll

我有一个使用libcurl库的程序。在编译代码以使.exe文件工作之后,我必须将libcurl.dll放在与exe文件相同的文件夹中。有没有办法将此libcurl.dll文件隐式添加到.exe文件中,因此它不需要dll文件?

2 个答案:

答案 0 :(得分:1)

您可以将任何有效负载作为自定义资源添加到可执行映像,包括其他二进制文件(请参阅Creating a New Custom or Data Resource)。在应用程序启动期间,您必须提取.dll并将其保存到磁盘。这还要求您将库导入标记为/DELAYLOAD(请参阅Specifying DLLs to Delay Load)。否则,由于未解决的导入,加载程序将失败。

对您的问题更自然的解决方案是将cURL编译为静态导入库并静态链接到它。这会将libcurl代码编译为最终的可执行映像。有关构建静态库的说明,请访问How to build cURL static library with SSL support on Windows

答案 1 :(得分:1)

您可以尝试使用开源pefrmdllembed将DLL合并到EXE文件中。

命令行: pefrmdllembed.exe -impinj myprogram.exe libcurl.dll myprogram_withcurl.exe

它会生成新的“myprogram_withcurl.exe”,您可以发送它而不是原始的EXE。应该工作大多数DLL。