我正在开发一个创建多个DLL的传统VS2015应用。它们都包含一个声明/定义静态数据的.h文件。预处理后变为:
class __declspec(dllexport) J { public: static const unsigned int SA_UNSPECIFIED = 1; ... };
在我的应用.cpp
文件中,我包含相同的.h文件,以及预处理(#ifdef
等)到此:
class __declspec(dllimport) J { public: static const unsigned int SA_UNSPECIFIED = 1; ... };
我的主要症状是我的应用说在链接期间无法找到J::SA_UNSPECIFIED
。应用程序“引用”(使用VS中的“引用”树)导出J
的其他DLL。
我认为这与"Why static variable needs to be explicitly defined?"不同,因为我使用的是const积分,而不是一般情况。在这种情况下,这不是真的吗?
static const
数据,并期望它能够工作吗?static const
语句中的case
变量。这项工作正常,直到我完成任务;然后case
说它需要一个恒定的表达(当然)。inline
这些; VS说这是一个错误。 答案:
事实证明,在我的应用程序中,我以非整数方式使用SA_UNSPECIFIED
,因此无法再在类定义中初始化。