我正在使用 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 对我来说很好并且 demangling。
我不是 Windows 用户,也不知道为什么链接器找不到符号...求救!
最佳答案
解决了!有两个问题:
1) dumpbin/exports 不显示所有符号。使用/all 代替显示形式为 __imp_functionName@8 的符号。
2) 链接器正在寻找 __imp__
形式的符号,而不是 vc6 库提供的 __imp_
形式的符号。 google 告诉我这是 32 位和 64 位构建之间的区别,所以 vc6 库是 64 位构建而我的是 32 位。
将我的包装器 dll 更改为 64 位解决了问题!
这半天过得很充实!或许。可能不会。正是在这样的时代,我喜欢成为一名程序员!
关于c++ - 链接 vc6 dll/lib 时未解析的符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20585440/