这确实让我感到震惊,并且Visual Studio 2008是如此笨拙,以至于根本没有以下错误。

我的C ++解决方案中包含多个项目。一个项目在crashreporter.h和crashreporter.cpp文件中具有基本的C ++类CCrashReporter。

我需要从它派生另一个类,该类位于同一解决方案的另一个项目中。所以我做:

//From CrashReporter2.h
#pragma once
#include "..\BaseModules\CrashReporter.h"

class CCrashReporter2 :
    public CCrashReporter
{
public:
    CCrashReporter2(void);
    virtual ~CCrashReporter2(void);
};


然后:

//From crashreporter2.cpp
#include "StdAfx.h"
#include "CrashReporter2.h"


CCrashReporter2::CCrashReporter2(void):
CCrashReporter(ENTERY_PARAM_FOR_REPORTER2)
{
}

CCrashReporter2::~CCrashReporter2(void)
{
}


上面的代码编译正常,但是当链接器运行时,我得到了这些:

1>CrashReporter2.obj : error LNK2019: unresolved external symbol "public: __thiscall CCrashReporter::CCrashReporter(int) blah-blah
1>CrashReporter2.obj : error LNK2019: unresolved external symbol "public: __thiscall CCrashReporter::~CCrashReporter(void) blah-blah
1>C:\Users\Dev\C++\ProjName123\Debug\Mod123.exe : fatal error LNK1120: 2 unresolved externals

最佳答案

请参阅Bo Persson的评论。每个项目都需要以一种或另一种方式链接正确的文件。您可以将源文件直接添加到项目中,也可以创建一个链接到应用程序中的静态/动态库项目。

09-06 07:33