簡體   English   中英

C ++ dllimport:具有靜態字段的未解析外部

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM