2012-10-10 84 views
0

ProjectAAA.obj : error LNK2001: unresolved external symbol "public: __thiscall X::ClassEvent::ClassEvent(unsigned int)" ([email protected]@@[email protected]@Z)如何修復錯誤LNK2001 LNK2019和

boost::shared_ptr<ClassEvent> bcfEvent(new ClassEvent((unsigned int) 10)); 

我已經定義ClassEvent::ClassEvent(unsigned int),而且不知道如何解決這個鏈接錯誤。

任何建議表示讚賞。

謝謝

更多信息:

1> ProjectAAA.obj:錯誤LNK2019:無法解析的外部符號 「公用:__thiscall APP :: X :: ClassEvent :: ClassEvent(unsigned int類型)」(? ?0ClassEvent @ X @ APP @@ QAE @ I @ Z)在函數「private:class std :: vector,class std :: allocator>> __thiscall APP :: X :: ProjectAAA :: GenerateEvents(class std :: map >>(const &)「(?GenerateEvents @ ProjectAAA @ X @ APP @@ AAE?AV?$ vector @ V?$ shared_ptr @ VClassEvent @ X @ APP @@@ boost @@ V?$ allocator @ V?$ shared_ptr @ VClassEvent @ X @ APP @@@提高@@@性病性病@@@ @@ ABV?$ @ VDate @ APP @@ IUEventAttributesMapCompare @ ProjectAAA @ X @ 2 @ V $ @分配器ü?$這副圖?@ $$ CBVDate @ APP @@ I @性病性病@@@ @@@ 5 @ @Z)

現在我已經完全隔離錯誤:

1> ProjectAAA.obj:錯誤LNK2019:解析外部符號「公共:__thiscall APP :: X :: ClassEvent :: ClassEvent(無符號整數)在函數「private:void __thiscall APP :: X :: ProjectAAA :: TestGenerateEvents(void)」(?TestGenerateEvents @ ProjectAAA @ X @ APP @ @)中引用的「(?? 0ClassEvent @ X @ APP @@ QAE @ @AAEXXZ)

+1

可能會有所幫助:http://stackoverflow.com/questions/12573816/what-is-an-undefined-reference-unresolved-external-symbol-error-and-how-doi-i-fix – chris

+1

需要更多信息。顯示產生此錯誤消息的最小但完整的示例。 –

+0

簡單的代碼工作正常。我有一個巨大的項目,我無法使用ClassEvent類中定義的任何函數。彙編沒問題,但鏈接總是給出錯誤。 – q0987

回答

1

您的問題是在您的解決方案中有兩個ClassEvent.cpp文件。當VC++編譯你的解決方案時,它會在一個目錄中輸出所有的obj文件,從而生成兩個ClassEvent.obj文件。無論後來編譯的cpp都會覆蓋前者。這會導致鏈接器中第一個符號丟失和不可見。

您可以通過打開其中一個文件的屬性,選擇C/C++ - >輸出文件 - >對象文件名並將其更改爲某些非衝突值(如ClassEvent2.obj)來解決此問題。

我相信這是Visual Studio中的一個錯誤,但它在最近的4個版本中沒有解決,因此可能會留下來。

1

經過多次測試,我找到了解決方案。

團隊中的某人從項目中排除了ClassEvent.CPP!

0

在我的情況都開始正常工作後,我從到位改變了構建架構。兩天前我遇到了同樣的問題。這是由於將我的程序部署到另一臺計算機造成的。由於某些原因,我不知道,架構設置已經從x86(如我寫的)變成了x64。 PS。我使用了Visual Studio 2015;