我正在使用vs2012创建一个小的包装器dll,链接到另一个用VC6构建的dll(.lib)。
我收到链接错误,如:
error LNK2019: unresolved external symbol __imp__functionName@8
我将vc6 dll提供的lib文件添加到链接行,正如我过去所做的那样...这里有一些版本问题吗? vc6 dll头文件以我认为的标准方式声明函数:
#define DLLIMPORT extern "C" __declspec(dllimport)
DLLIMPORT ULONG WINAPI functionName(...);
在vc6 lib文件中使用dumpbin / exports显示没有 imp 前缀和“@ 8”的“functionName”..不确定这是否是一个问题,或者只是dumpbin对我来说很好和消解。
我不是一个Windows用户,也不知道为什么链接器没有找到符号......帮助!
答案 0 :(得分:4)
解决!有两个问题:
1)dumpbin / exports不显示所有符号。使用/ all显示__imp_functionName @ 8形式的符号。
2)链接器正在寻找vc6 lib提供的__imp__
而不是__imp_
形式的符号。谷歌告诉我,这是32位和64位版本之间的区别,所以vc6库是64位构建,而我的是32。
将我的包装器dll更改为64位解决了这个问题!
这花了半天时间!也许。可能不是。当我喜欢成为一名程序员时,就像这样!