我在 dll-1 的头文件 xh 中定义了一个类,它是
class A{
public:
static int val;
__declspec(dllexport) static void setval(int v) {val = v;}
};
Run Code Online (Sandbox Code Playgroud)
和 x.cpp 有
int A::val = 256;
Run Code Online (Sandbox Code Playgroud)
现在我构建了 dll-1 并且它通过了,但是链接该 dll 的其他 dll 无法构建,并出现错误 unresolved external symbol public: static int A::val。当我在 x.cpp 中定义导出函数时,这个问题得到了解决。但我不明白为什么它坏了。谢谢。
由于您内联定义了该函数,因此编译器可以在您调用该函数的位置自由创建该函数的副本。这些副本无法看到该变量,因为它未导出。
当您将函数定义移至 .cpp 时,所有调用都会返回到 DLL,这可以在创建 DLL 时解析变量。
| 归档时间: |
|
| 查看次数: |
5135 次 |
| 最近记录: |