簡體   English   中英

C.Winapi在.exe文件中包含DLL

[英]C++ Winapi Including DLL in the .exe file

我正在使用MYSQL庫和libmysql.lib /.dll。 如果沒有libmysql.dll,我的程序將無法運行。當我嘗試不使用dll的情況下運行項目時,我將收到該錯誤消息。 我基本上想要做的是將該dll放入我的.exe文件中。 使用該dll構建.exe文件,並使程序從他自己那里讀取文件。 我的意思是,將程序提供給內部帶有該dll的人。 有可能的 ?

我嘗試了本節: 在MFC C ++ EXE中嵌入DLL? 但是程序仍然要求dll ..(但是我確實看到.exe的大小已更改),因此已添加dll。 但是程序仍然要求libmysql.dll ..關鍵是要在.exe文件中使用它。.謝謝。

如果您在編譯時靜態鏈接到DLL,那么您所要求的將無法完成。 您需要在運行時動態鏈接到DLL,方法是顯式調用LoadLibrary()GetProcAddress()以直接訪問DLL函數,或者利用編譯器的延遲加載功能(使用LoadLibrary()GetProcAddress()內部,但在您的代碼中隱藏了該事實)。 無論哪種方式,您都可以在編譯時將DLL存儲在EXE的資源中,然后在運行時將資源提取到臨時文件中,並根據需要加載/使用它(您不能從EXE的資源內部使用DLL。嗯,有一種方法可以做到,但是這是一種非常復雜和高級的技術,因為它需要實現自己的可執行加載器,該可執行加載器基本上可以模仿OS的內置可執行加載器已經執行的操作。 使用完DLL后,可以將其從內存中卸載並刪除臨時文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM