我有一个使用libcurl
库的程序。代码编译后,为了使 .exe 文件工作,我必须将其放在libcurl.dll
与 exe 文件相同的文件夹中。有没有办法将此 libcurl.dll 文件隐式添加到 .exe 文件中,这样它就不需要 dll 文件?
问问题
1727 次
2 回答
1
您可以将任何有效负载作为自定义资源添加到可执行映像,包括其他二进制文件(请参阅创建新的自定义或数据资源)。在应用程序启动期间,您必须提取 .dll 并将其保存到磁盘。这还要求您将库导入标记为/DELAYLOAD
(请参阅指定 DLL 以延迟加载)。否则加载程序将由于未解析的导入而失败。
解决您的问题的一个更自然的方法是将 cURL 编译为静态导入库并静态链接到它。这会将 libcurl 代码编译为最终的可执行映像。可以在How to build cURL static library with SSL support on Windows中找到有关构建静态库的说明。
于 2013-09-22T20:21:40.720 回答
1
您可以尝试使用开源pefrmdllembed将 DLL 合并到您的 EXE 文件中。
命令行: pefrmdllembed.exe -impinj myprogram.exe libcurl.dll myprogram_withcurl.exe
它将生成新的“myprogram_withcurl.exe”,您可以使用它来代替原来的 EXE。应该适用于大多数 DLL。
于 2017-08-03T06:36:15.917 回答