c++ - 链接 vc6 dll/lib 时未解析的符号

标签 c++ visual-studio visual-c++ dll visual-c++-6

我正在使用 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/

相关文章:

c++ - MySQL 中的 where 子句如何工作?

c++ - std::map 插入陷入无限循环或给出访问冲突错误

mysql - MS SQL 数据库管理/IDE

c++ - array<System::String ^> 标准 C++ 是怎样的?

c++ - C++中对象状态的重构

c# - 简单地将 OpenMp Parallel for 转换为 c# Parallel for

c# - 将常量呈现到 XML 文档中?

.net - 从 IntelliSense 中隐藏用户控件属性

c++ - wxwidgets中的框架调整大小

visual-studio-2010 - VC++ cl.exe —找不到DLL