簡體   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