我在 dll-1 的头文件 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 构建失败并出现错误 unresolved external symbol public: static int A::val 。当我在 x.cpp 中定义导出函数时,这个问题得到了解决。但我不明白为什么它坏了。谢谢。
最佳答案
因为您定义了内联函数,所以编译器可以在您调用它的地方自由地创建该函数的拷贝。这些拷贝无法看到该变量,因为它未导出。
当您将函数定义移动到 .cpp 时,所有调用都会返回到 DLL,这可以在创建 DLL 时解析变量。
关于c++ - 导出静态函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12592037/