2012-01-12 111 views
1

我試圖建立與2個項目的解決方案,並得到這些錯誤消息:錯誤LNK2019和LNK2028在VC++ Express 2008的

ColliderTest.obj:錯誤LNK2028:未定義的令牌(0A000080)「公開:__thiscall矩形: :函數「void __cdecl myFunction(void)」(?myFunction @@ $$ FYAXXZ)中引用的「Rect(int)」(?? 0Rect @@ $$ FQAE @ XZ)

ColliderTest.obj:error LNK2019:unresolved在函數「void __cdecl myFunction(void)」中引用的外部符號「public:__thiscall Rect :: Rect(int)」(?? 0Rect @@ $$ FQAE @ XZ)

代碼:

  • 在項目 「撞機」 我有這些文件:

Collider.h

#pragma once 

class Rect{ 

    int x; 
    int y; 
    unsigned int w; 
    unsigned int h; 

public: 
    Rect(int x); 
}; 

Collider.cpp

#include "Collider.h" 

Rect::Rect(int x){ 
    this->x = x; 
} 
  • 項目 「ColliderTest」有一個參考項目對撞機,這個文件:

ColliderTest.cpp

#include "../app/Collider.h" 

void myFunction(); 

void myFunction(){ 

    Rect rect(4); 
} 

此外,每個項目都有一個空的Main()函數的main.cpp文件,避免抱怨入口點的compiller的。

+0

在搜索了一些關於該問題的信息之後,我得出結論,問題在於參考。它可能無法正確完成。我認爲這可以幫助更多:http://msdn.microsoft.com/en-us/library/ms235590(v=vs.80).aspx – AlexSavAlexandrov 2012-01-12 23:54:12

回答

2

這兩個項目都有一個主要功能?

這意味着您正在構建兩個可執行文件。可執行文件通常不會導出函數。

您需要一個可執行文件和一個類庫(dll)。

順便說一句:如果你有一個空的主函數,你怎麼知道你的程序是否運行?

+0

不可能有一個可執行項目,另一個來測試它?我記得我用C#做過類似的事情,所以我認爲它會是一樣的。 – Granjero 2012-01-12 22:37:45

+1

C#支持多種主要方法,告訴編譯器使用哪一個(通過它所在的類名稱)進行特定構建。 C++不直接支持這種事情,儘管類似的事情可能會用聰明的項目/ makefile配置拼湊起來。 – 2012-01-13 00:43:41

+1

@格蘭傑羅:你可能有兩個可執行文件,但你必須使用進程間通信來使用另一個進行測試。我懷疑這不是你想要的。 – 2012-01-13 15:12:46