【发布时间】:2011-05-28 20:47:40
【问题描述】:
我刚刚将一个包含 c++ 和 c# 项目的解决方案从 VS2008 迁移到 VS2010 并遇到了一个奇怪的问题。
当我选择“全部重建”时,一切都会按照我的预期进行编译和链接。
然后我更改了一些 c++ 源文件(只需添加一个空格),构建项目,我得到了几个 数千个链接错误,如下所示:
GDlgPackerListe.obj : error LNK2028: Nicht aufgelöstes Token (0A0000C7) ""public: bool __thiscall LList::Add(class LBString const &)" (?Add@LList@@$$FQAE_NABVLBString@@@Z)", auf das in Funktion ""public: virtual void __thiscall LRcPackerListe::HookRunReport(class LFortschritt &)" (?HookRunReport@LRcPackerListe@@$$FUAEXAAVLFortschritt@@@Z)" verwiesen wird.
Db_Lieferschein2.obj : error LNK2020: Nicht aufgelöstes Token (0A0000E6) "public: bool __thiscall LList::Add(class LBString const &)" (?Add@LList@@$$FQAE_NABVLBString@@@Z).
bmed.obj : error LNK2028: Nicht aufgelöstes Token (0A00014D) ""public: bool __thiscall LList::Add(class LBString const &)" (?Add@LList@@$$FQAE_NABVLBString@@@Z)", auf das in Funktion ""public: virtual long __thiscall MENUKB::Methode(long,long)" (?Methode@MENUKB@@$$FUAEJJJ@Z)" verwiesen wird.
GDlgPackerListe.obj : error LNK2028: Nicht aufgelöstes Token (0A0000C9) ""public: void __thiscall LList::Sort(void)" (?Sort@LList@@$$FQAEXXZ)", auf das in Funktion ""public: virtual void __thiscall LRcPackerListe::HookRunReport(class LFortschritt &)" (?HookRunReport@LRcPackerListe@@$$FUAEXAAVLFortschritt@@@Z)" verwiesen wird.
Dlg_Gutschrift.obj : error LNK2020: Nicht aufgelöstes Token (0A000128) "public: virtual __thiscall LBaseType::~LBaseType(void)" (??1LBaseType@@$$FUAE@XZ).
Module_Damals.lib(svSuchAltLink.obj) : error LNK2001: Nicht aufgelöstes externes Symbol ""public: __thiscall SView::SView(void)" (??0SView@@QAE@XZ)".
Module_Damals.lib(svShowEMF.obj) : error LNK2001: Nicht aufgelöstes externes Symbol ""public: virtual void __thiscall SView::HookValueChanged(unsigned __int64)" (?HookValueChanged@SView@@UAEX_K@Z)".
当我点击“全部重建”时,它会重新编译和链接,没有任何错误甚至警告,并生成一个工作 exe。
我使用的是 Visual Studio 2010 final(德语版)。
这是怎么回事?或者,更重要的是:如何让链接器正常工作??
【问题讨论】:
-
尝试一次删除所有中间文件 - 从仅包含源文件和项目文件的项目文件夹开始。
-
去过,试过了,刚刚又试了。同样的问题:第一次完全重建确实有效,然后由于大量链接错误而失败。是的,我真的删除了除源文件之外的所有文件。即使是隐藏的。