C++ 動態加載 DLL 時,GetProcAddress() 返回 NULL,GetLastError() 獲取錯誤代碼為 127


1、問題現象:

  采用“運行期間動態鏈接”自己的 dll 文件,LoadLibrary() 成功獲取 dll 模塊句柄,但是 GetProcAddress() 返回 NULL。

 

2、問題分析:

  調用 GetLastError() 獲取錯誤代碼為 127,意思是“找不到指定程序”;

  用 Depends 工具(下載地址:http://www.dependencywalker.com/)查看 dll 中的導出函數名稱,

  發現與定義的不完全一致,導出函數定義: extern "C" __declspec(dllexport) int __stdcall Add(int x, int y)

  預期導出函數名為 Add,實際為 _Add@8 如下圖所示)。  

  

  

3、解決方案:

  (1) 在 DLL 工程中使用 .def 文件顯式指定導出文件名,如下如所示:

  

  (2) 重新編譯 DLL 工程,問題解決。用 Depends 工具查看新的 DLL 導出函數信息如下圖所示:

  

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM