繁体   English   中英

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

[英]Visual Studio C++ turn .exe +.dll into only .exe

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

您可以将任何有效负载作为自定义资源添加到可执行映像,包括其他二进制文件(请参阅创建新的自定义或数据资源 )。 在应用程序启动期间,您必须提取.dll并将其保存到磁盘。 这还要求您将库导入标记为/DELAYLOAD (请参阅指定DLL以延迟加载 )。 否则,由于未解决的导入,加载程序将失败。

对您的问题更自然的解决方案是将cURL编译为静态导入库并静态链接到它。 这会将libcurl代码编译为最终的可执行映像。 有关构建静态库的说明,请参见如何在Windows上构建具有SSL支持的cURL静态库

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM