VS2010 final只关联“重建所有”的项目,而不是“build changed”

时间:2010-04-22 10:01:54

标签: visual-studio-2010 linker

我刚刚将包含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)".

当我点击“rebuild all”时,它重新编译并链接,没有任何错误甚至是警告,并产生一个工作的exe。

我正在使用Visual Studio 2010 final(德语版)。

这是怎么回事?或者,更重要的是:如何让链接器正常工作?

2 个答案:

答案 0 :(得分:0)

嗯,经过一些头疼,我们似乎找到了答案。至少在我们的案例中,问题是双重的:

  1. 我们已经设置了项目依赖项,但没有使用较新的“项目投影”引用作为将项目链接到目标的方法。似乎旧的依赖关系对话框不再适用。

  2. 我们有一些可疑的代码已经悄悄地在一个虚拟函数被定义但未在派生类中实现 - 基类有一个默认实现。为什么这不是重建中的错误,我不知道。

  3. 以下内容比我更好地解释了:) http://blogs.msdn.com/b/vcblog/archive/2010/03/02/visual-studio-2010-c-project-upgrade-guide.aspx

答案 1 :(得分:0)

我也有这个错误。我的主项目取决于库和另一个库等。从VS2008迁移到VS2010后,必须添加每个库作为主项目的引用。现在错误消失了......