2013-08-29 26 views
0

我有一個項目設置是這樣的:Visual Studio的C++頭和CPP鏈接錯誤

Header (.h) files 
________________     _________ 
| Main Big Class |---------------| ModuleB | 
| - libraries | _________ | -SubMod |  
|________________|--| ModuleA | |_________| 
        | -SubMod |  | 
        |_________| ____|____ 
         |  | SubModB | 
        ____|____ |_________| 
        | SubModA | 
        |_________| 

All Code (.cpp) files have #include "Main Big Class.h" 

於是就ModuleA的子模塊,他們沒有在他們的頭任何包括,他們只擁有的#include 「Main.h」他們的.cpp文件,在那裏我有一個字符串,向量,以及其他一切我在項目中使用的#includes。 在ModuleA我有包括所有它的子模塊,我可以使用向量和字符串從ModuleA任何子模塊..

現在,我要搬到ModuleB,我添加了一個新的子模塊,並做到了和以前一樣,ModuleB有:

#include "SubModuleB1.h" 
#include "SubModuleB2.h" 

但是,當我嘗試編譯時,Visual Studio顯示了在那裏我有從B.

這些子模塊串和載體有時候註釋行線錯誤,編譯,然後取消註釋它們可能會編譯,但我必須逐行執行,並且單個錯誤意味着它不會除非我再次評論他們。

我試圖清理和重建已經,沒有工作,我不知道爲什麼會這樣。

爲什麼會發生這種情況以及如何解決呢?

編輯:的錯誤是3每行:

error C2143: syntax error : missing ';' before '<' 
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 
error C2238: unexpected token(s) preceding ';' 
+0

您是否在代碼中使用了namespace std; –

+0

是的,它在主頭文件中。所有其他子模塊和模塊A都可以很好地使用字符串和向量進行編譯,它只是從B創建的這個新創建的子模塊。我記得這發生了,當我創建一個子模塊爲好,但經過一段時間(和構建)它走了,但我不知道它爲什麼。 – Danicco

回答

0

在你的cpp文件,添加以下

using namespace std; 

對於錯誤C4430,我想你忘記voidint當你定義你的功能,如

void myfunction (...) 
    { 
     // 
    } 

但在您的代碼中,您只有

myfunction() 
    { 
     // 
    } 
+0

3行錯誤出現在我有「string testString;」行的行上。只要我評論這一行,其他的東西都可以很好地編譯。 – Danicco

+0

'string testString;'?之前和之後的行是什麼?錯誤消息的行是什麼樣的? –

+0

這是一個簡單的類,只有構造函數,而「private:string testString;」。編譯指向的錯誤行中就是這樣。它總是這3行錯誤,所以如果我有3個字符串,我會得到9個錯誤等。 – Danicco