2013-01-21 37 views
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函數在運行時動態調用函數,但寧願不要)。

回答

0

我沒有注意到任何會告訴我你是否在做32或64位編碼。 MSDN有一些關於如何基於你沒有源代碼的DLL創建一個導入庫的信息。這篇文章是爲了製作一個32 bit import library。乾杯!

+0

我正在使用32位。雖然你的鏈接並沒有直接解決我的問題,但它確實讓我按照正確的思路思考。解決方法是使用def文件(如鏈接所述,因爲我已經嘗試使用Borland的impdef和implib),但在EXPORT部分添加了別名:'_Init @ 8 = Init' – user1996726