2011-10-29 48 views
2

我有一個類全局模板C++對象的

class ICIecHdlcSetup 
{ 
//some thing 
}; 

創建一個全局訪問對象我這樣做:

//in obj.cpp: 
ICIecHdlcSetup obj_ICIecHdlcSetup(0x00,0x00,0x16,0x00,0x00,0xFF); 

//in obj.hpp: 
extern ICIecHdlcSetup obj_ICIecHdlcSetup; 

現在我有一個模板類:

template <class TValue> 
class ICData 
{ 
//some thing 
}; 

但同樣的方式也行不通

//in obj.cpp: 
ICData <uint8_t> temperture(7,64,41,0,0,255) ; 

//in obj.hpp: 
extern ICData <uint8_t> temperture ; 

,使這個錯誤:

Error 10 error LNK2019: unresolved external symbol "public: void __thiscall ICData<unsigned char>::set_value(unsigned char)" ([email protected][email protected]@@[email protected]) referenced in function "void __cdecl object_instantiation(void)" ([email protected]@YAXXZ) E:\sv_repos\Test\Test\VS2010\Test\Test\Objects.obj Test 

在此先感謝。

回答

1

給出的錯誤很可能意味着被引用的函數根本不存在,通常或在當前編譯單元中。

檢查以確保它已在類主體中定義(在模板情況下的頭文件中)或正在正確導入(如果來自外部源,如DLL或庫;一個常見問題,但不太可能模板),包括正在鏈接的庫。

您的extern全局變量的形式看起來是正確的,並且通常對模板起作用。該錯誤似乎是特定於您的模板類,但沒有關於該函數是否實際存在於您的發佈代碼中的信息。