导出静态函数

时间:2012-09-25 22:28:31

标签: c++ visual-c++

我在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中定义导出的函数时,这解决了。但我不明白为什么它破了。谢谢。

1 个答案:

答案 0 :(得分:4)

因为您定义了内联函数,所以编译器可以自由地在您调用它的位置创建函数的副本。这些副本无法查看变量,因为它未导出。

当您将函数定义移动到.cpp时,所有调用都会返回到DLL,这可以在创建DLL时解析变量。