2014-03-30 103 views
0

(我使用Visual Studio和從來沒有手動鏈接對象的文件中的可執行文件)靜態函數和鏈接錯誤

這是我標題代碼:

#ifndef U_H 
#define U_H 

typedef unsigned int uint; 
typedef unsigned short ushort; 

class U{ 
public: 
    static uint getX(char* a, uint b, ushort c); 
    static uint getY(char* a, uint b, ushort c); 
    static uint getZ(char* a, uint b, ushort c); 
}; 

#endif 

和源文件:

#include "U.h" 

uint U::getX(char* a, uint b, ushort c){ 
    //Stuff 
} 

uint U::getY(char* a, uint b, ushort c){ 
    //Stuff 
} 

uint U::getZ(char* a, uint b, ushort c){ 
    //Stuff 
} 

並在主I #include "U.h",然後撥打以上使用U::getY(a,b,c)等,但我得到以下錯誤:

1>main.obj : error LNK2001: unresolved external symbol "unsigned int __cdecl getX(char *,unsigned int,unsigned short)" ([email protected]@[email protected]) 
1>main.obj : error LNK2001: unresolved external symbol "unsigned int __cdecl getY(char *,unsigned int,unsigned short)" ([email protected]@[email protected]) 
1>main.obj : error LNK2001: unresolved external symbol "unsigned int __cdecl getZ(char *,unsigned int,unsigned short)" ([email protected]@[email protected]) 

我通常忘記源文件中的U::部分,但是這裏有?

+1

您可能忘記將'u.obj'鏈接到您的可執行文件中。 – Thomas

+0

@Thomas我使用的是視覺工作室,從來沒有必要手動做到這一點?會有另一個原因嗎? – user997112

+0

@ user997112,在VS中,您需要將您的U.cpp文件添加到解決方案資源管理器(http://i.stack.imgur.com/mzPJ3.jpg)中的源文件部分。 –

回答

0

它似乎是一個系統設置問題。這種事情曾經發生在我身上。無論如何,請到[工程] - > [設置] - > [鏈接器] - > [啓用增量鏈接],在此處查看設置。上次我遇到鏈接問題時,我將其更改爲「否」,問題得到解決。