我有一个包含主程序和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)
可以避免使用静态字段的访问器吗?
答案 0 :(得分:0)
宏_USRDLL
只应在DLL项目中定义。