[英]C++ dllimport: unresolved externals with static fields
我有一個包含主程序和DLL模塊的Visual Studio C ++項目。 DLL具有一個具有以下定義的類:
// .h
#ifdef _USRDLL
#define DLLAPI __declspec(dllexport)
#else
#define DLLAPI __declspec(dllimport)
#endif
class DLLAPI EClass
{
public:
static int value;
static int get_value();
};
// .cpp
int EClass::value = 1;
int EClass::get_value()
{
return value;
}
DLL項目已成功編譯,Dependency Walker可以觀察到兩個符號(值和get_value)。
在主程序中,我可以調用靜態函數get_value
int v = EClass::get_value(); // Ok, v = 1
但是當我嘗試直接訪問字段value
int v = EClass::value; // Error
我得到一個錯誤
LNK2001 unresolved external symbol "public: static int EClass::value" (?value@EClass@@2HA)
是否可以避免將訪問器用於靜態字段?
宏_USRDLL
只能在DLL項目中定義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.