我有第三方LIB,其符号导出为普通C / cdecl,因此例如dumpbin.exe /SYMBOLS
报告导出__imp_nvmlInit
和nvmlInit
。
但是在Visual Studio 2010中,当我尝试导入它们时,头文件将具有
extern "C" nvmlReturn_t nvmlInit(...);
但是当我尝试编译时,我收到以下错误:
main.obj:错误LNK2019:函数_main中引用的未解析的外部符号_nvmlInit
如何阻止Visual Studio查找带有前导下划线的符号? __declspect(dllimport)
不起作用,因为它装饰到__imp__nvmlInit
(一个下划线太多)。
感谢。
答案 0 :(得分:1)
这是一个链接器错误。您需要链接与DLL关联的.LIB文件,这将为链接器提供一个承诺,即在加载DLL本身时该函数将在运行时可用。