2011-05-11 58 views
3

我有一個第三方LIB,它具有以普通C/cdecl導出的符號,因此例如dumpbin.exe /SYMBOLS報告導出了__imp_nvmlInitnvmlInitDLL和Name Mangling

然而,在Visual Studio 2010中,當我嘗試導入,頭文件將有

extern "C" nvmlReturn_t nvmlInit(...); 

但是當我嘗試編譯,我得到以下錯誤:

main.obj : error LNK2019: unresolved external symbol _nvmlInit referenced in function _main

哪有我停止Visual Studio尋找具有前導下劃線的符號? __declspect(dllimport)不起作用,因爲它然後裝飾到__imp__nvmlInit(一個下劃線太多)。

謝謝。

回答

1

這是一個鏈接器錯誤。您需要鏈接到與DLL關聯的.LIB文件,這會爲鏈接器提供一個承諾,即在加載DLL本身時,該函數將在運行時可用。

+0

糟糕,對不起,我在我原來的文章中犯了一個錯誤 - 我實際上鍊接到.LIB,並且庫導出完全未修飾的函數,而鏈接器正在尋找下劃線的前綴名稱... – 2011-05-11 08:57:02

相關問題