DLL和名称修饰

3

我有一个第三方库,其中的符号以纯C / cdecl导出,例如dumpbin.exe /SYMBOLS报告导出了__imp_nvmlInitnvmlInit

然而,在Visual Studio 2010中尝试导入它们时,头文件会有:

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

但是当我尝试编译时,出现了以下错误:

main.obj : error LNK2019: 无法解析的外部符号 _nvmlInit,该符号在函数 _main 中被引用

如何让Visual Studio不再寻找具有前导下划线的符号? __declspec(dllimport) 不起作用,因为它会装饰成 __imp__nvmlInit(下划线太多了)。
谢谢。
1个回答

1

这是一个链接器错误。您需要链接与DLL相关联的.LIB文件,这将向链接器提供一个承诺,在加载DLL本身时该函数将在运行时可用。


抱歉,我在原始帖子中犯了一个错误--实际上我链接到了 .LIB 文件,而该库导出的是完全未修饰的函数,而链接器正在寻找带下划线前缀的名称... - Andrew Lee

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接