繁体   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