我在dll-1中的headerfile x.h中定义了一个类
class A{
public:
static int val;
__declspec(dllexport) static void setval(int v) {val = v;}
};
和x.cpp有
int A::val = 256;
现在我构建了dll-1并且它已经通过,但链接此dll的其他dll无法构建错误未解析的外部符号 public:static int A :: val 。当我在x.cpp中定义导出的函数时,这解决了。但我不明白为什么它破了。谢谢。
答案 0 :(得分:4)
因为您定义了内联函数,所以编译器可以自由地在您调用它的位置创建函数的副本。这些副本无法查看变量,因为它未导出。
当您将函数定义移动到.cpp时,所有调用都会返回到DLL,这可以在创建DLL时解析变量。