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 導出函數信息如下圖所示: