當我們在visual studio 2008中使用__stdcall編譯dll時,dll中的編譯函數名是。GCC使用__stdcall編譯dll
FunctionName
雖然當我們使用GCC使用WX-DEV-CPP GCC追加paramers函數具有數量編譯相同的dll,所以使用的Dependency Walker的函數的名字看起來像。
FunctionName @ numberOfParameters或== FunctionName @ 8
如何告訴GCC編譯器,以從DLL導出符號刪除@nn?
感謝羅傑的答覆,事實證明,問題是另一名開發人員將DEF文件放入該項目中。這個DEF文件告訴鏈接器在DLL中使用的命名約定。這就是爲什麼我們即使使用相同的調用約定也能得到不同的庫名稱的原因。 解決方案證明我們的開發人員在爲項目創建自己的DLL時已經從頭文件中刪除了WINAPI。這導致windows visual studio恢復爲默認調用約定__cdecl(/ Gd)。 – Chad 2009-12-08 02:56:41