2012-07-16 166 views
1

是如此愚笨,它不是與所有以下錯誤很有幫助。MSVC鏈接錯誤LNK2019 ++解決方案

我的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) 
{ 
} 

編譯OK上面的代碼,但是當鏈接器運行我得到這些:

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 
+1

看起來像'BaseModules/CrashReporter.cpp'不是您的項目的一部分,或者您沒有鏈接包含它的庫。 – 2012-07-16 06:05:24

+0

http://stackoverflow.com/questions/11429971/unable-to-resolve-error-lnk2019-unresolved-external-symbol/11430008#11430008 – 2012-07-16 06:06:05

+0

@BoPersson:你懂了!謝謝。這很容易。我希望這樣的錯誤信息。你想發佈它作爲答案嗎?所有我需要做的是選擇第二個項目,然後轉到項目 - >添加現有項,然後從基類都的.cpp和.h文件。謝謝:) – ahmd0 2012-07-16 06:19:06

回答

0

請參閱從博佩爾森的評論。每個項目都需要以某種方式與正確的文件鏈接。將源文件直接添加到項目中,或者創建一個鏈接到應用程序的靜態/動態庫項目。

+0

謝謝。雖然我不確定爲什麼我需要製作靜態/動態庫項目。我將所有的項目一起編譯成單獨的exe文件,在這裏我只是重用了CCrashReporter類。實際上,我已經使用「共享」結構執行此操作,並在SharedTypes.h文件中定義,該文件與該類一樣被聲明和使用。這怎麼不會導致鏈接器錯誤? – ahmd0 2012-07-16 06:13:47