我在VS2010創建了一個簡單的dll用下面的函數:32位和64位庫裝飾
extern "C"
{
__declspec(dllexport) int myFunc()
{
return 1;
}
}
我比較了生成的DLL和lib文件既x64和Win32平臺,我發現的結果我不明白。
使用Dependency Walker我看到兩個dll都會顯示未裝飾的「myFunc」。 雖然在Notepad ++中同時打開兩個lib文件,但當x64僅顯示「myFunc」時,Win32 lib顯示「_myFunc」。
有人可以解釋爲什麼lib簽名不同嗎?是否可以刪除32位lib文件中的下劃線?
http://stackoverflow.com/a/15664100/17034 –
那麼我完全是新名字裝飾,所以你的鏈接是有趣的漢斯。我做了一些進一步的研究,並在此頁面上找到(https://en.wikipedia.org/wiki/Name_mangling),「Windows上的64位慣例(Microsoft C)沒有引領下劃線」。 –