VC++ 6 链接器错误

Posted

技术标签:

【中文标题】VC++ 6 链接器错误【英文标题】:VC++ 6 Linker Errors 【发布时间】:2011-05-13 17:07:02 【问题描述】:

基本上,发生的事情是这样的:我有一个 VC6 工作区(总共包含 3 个项目),在无法成功将其移植到 VS2010 之后,我在虚拟机上安装了 XP(主机上的 Win 7),并且在 devbox 上安装 VS6。

从那里,我能够克服编译错误,并一头扎进一大堆链接器错误......

我不知道出了什么问题。如果有人可以帮助我,将不胜感激!

(来自构建日志的摘录,总共有 41 个链接器错误...)

>Linking...
MainFrm.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall ReportMenuBuilder::~ReportMenuBuilder(void)" (??1ReportMenuBuilder@@UAE@XZ)
MainFrm.obj : error LNK2001: unresolved external symbol "public: __thiscall ReportMenuBuilder::ReportMenuBuilder(void)" (??0ReportMenuBuilder@@QAE@XZ)
MainFrm.obj : error LNK2001: unresolved external symbol "public: bool __thiscall ReportMenuBuilder::Build(bool)" (?Build@ReportMenuBuilder@@QAE_N_N@Z)
MainFrm.obj : error LNK2001: unresolved external symbol "public: int __thiscall CReportMultiDocTemplate::GetDocumentCount(void)const " (?GetDocumentCount@CReportMultiDocTemplate@@QBEHXZ)
MainFrm.obj : error LNK2001: unresolved external symbol "public: class CString __thiscall ReportMenuBuilder::GetFilespecGivenID(unsigned int)const " (?GetFilespecGivenID@ReportMenuBuilder@@QBE?AVCString@@I@Z)

我唯一能想到的显然是项目无法从其他项目中查看必要的文件,但我不知道为什么。

【问题讨论】:

第一个问题 - 它是建立在真正的 XP 机器上的吗? 这可能是 Crystal Reports 的一部分吗?你安装了吗? 这是几年前的代码,它是一个工作产品,所以我假设它是建立在一个真正的 XP 盒子上的。 @kogh 我不明白你为什么会这么认为。 虚拟机(恕我直言)不太可能成为问题。更有可能是缺少库,或者可能是使用不同编译器版本编译的库。包含“ReportMenuBuilder”代码的东西。您是否正确设置了旧的构建脚本和 environmentmset? EnvVars、依赖库或 SDK,诸如此类。 【参考方案1】:

我的第一个猜测是您没有将 .lib 文件添加到其他项目的额外导入中。如果你有 dumpbin 二进制文件,看看你是否看到导出。

【讨论】:

以上是关于VC++ 6 链接器错误的主要内容,如果未能解决你的问题,请参考以下文章

std::exception::_Raise 和 std::exception::exception 上的 VC++ 链接器错误

MS VC++ 2010的这个链接器错误是啥意思[重复]

使用 OpenSSL 构建 LibCurl 会导致链接器错误

Borland C++ builder 6 链接器错误

AIX 6.1 链接器错误

VC++ 一个解决方案中的多个项目 - 链接器问题 (LNK2019)