gpt4 book ai didi

c++ - 访问使用 def 文件导出的静态变量时崩溃

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:37:29 25 4
gpt4 key购买 nike

我正在使用 def 文件从 dll 中导出一些静态函数和变量。导入 dll 后访问静态变量时程序崩溃。任何想法为什么会这样?我使用的是 VS2017,Windows SDK 10.0.17763.0。

库.h

struct DLLEXPORT A {
static int a;
static int get();
};

struct B {
static int b;
static int get();
};

库.cpp

int A::a = 0; 
int A::get() {return a;}

int B::b = 0;
int B::get() {return b;}

库.def

LIBRARY

EXPORTS
?b@B@@2HA
?get@B@@SAHXZ

主要.cpp

int main() {
int a = A::get(); // Works fine
int b = B::get(); // Works fine

A::a = 1; // Works fine
B::b = 1; // CRASH (Access violation writing location ...)
return 0;
}

最佳答案

我认为 def 文件条目缺少 DATA 属性,因此 B::b 被视为通常只读的代码:

?b@B@@2HA DATA

关于c++ - 访问使用 def 文件导出的静态变量时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54549761/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com