2
我正在將一箇舊的Borland編譯器的C++項目移植到VisualStudio 2008.該項目使用第三方DLL,我沒有源代碼,所以我無法重新編譯或修改它。 DLL的頭文件定義功能的線沿線的:在Visual C++中鏈接到舊的第三方DLL
extern "C" {
void __stdcall Init(int a, int b);
}
然而,當我嘗試鏈接到這個DLL,VisualStudio中說,它無法找到函數_Init @ 8。當我查看DLL時,我發現函數名是_Init,而不是_Init @ 8(似乎該DLL早於微軟將@ 8添加到stdcall名稱修改中)。
我的問題是:如何在這個DLL中調用funcions? VisualStudio是否支持這些舊的DLL,或者是否有我缺少的標誌/設置。 (我知道我可以使用LoadLibrary/GetProcAddress函數在運行時動態調用函數,但寧願不要)。
我正在使用32位。雖然你的鏈接並沒有直接解決我的問題,但它確實讓我按照正確的思路思考。解決方法是使用def文件(如鏈接所述,因爲我已經嘗試使用Borland的impdef和implib),但在EXPORT部分添加了別名:'_Init @ 8 = Init' – user1996726