gpt4 book ai didi

c - 写入 DLL 中的变量时发生段冲突 (lcc-win32)

转载 作者:行者123 更新时间:2023-11-30 15:08:13 25 4
gpt4 key购买 nike

我已经构建了一个带有一些函数和全局变量的 DLL。然后我使用 buildlib 为其创建一个导入库。

.exp 文件是:

CSC_FFSW.dll
_CSC_FFSW_B _CSC_FFSW_B data
_CSC_FFSW_DWork _CSC_FFSW_DWork data
_CSC_FFSW_M _CSC_FFSW_M data
_CSC_FFSW_U _CSC_FFSW_U data
_CSC_FFSW_Y _CSC_FFSW_Y data
_CSC_FFSW_initialize _CSC_FFSW_initialize
_CSC_FFSW_step0 _CSC_FFSW_step0
_CSC_FFSW_step1 _CSC_FFSW_step1

当我从程序导入 DLL 时,我可以读取全局变量(例如 CSC_FFSW_U),但当我尝试写入它们时,我收到段冲突异常。

我没有使用导入库,而是尝试使用以下方法手动从 DLL 导入符号:

dllHandle = LoadLibrary("CSC_FFSW.dll");
myType* pCSC_FFSW_U = (myType*)GetProcAddress(dllHandle, "_CSC_FFSW_U");
...
etc.

通过这种方法,我可以很好地写入变量。然而,这种方法不太好,因为它需要更多的手动工作,而且容易出错。

是否可以对 buildlib 创建的导入库中的变量进行读写访问?我应该如何在 .exp 文件中指定它?

非常感谢,

米格尔

最佳答案

该问题是由于变量声明中缺少 __declspec(dllimport) 和 __declspec(dllexport) 引起的。

参见https://groups.google.com/forum/#!topic/comp.compilers.lcc/FrIyE0HMI04了解更多详情。

关于c - 写入 DLL 中的变量时发生段冲突 (lcc-win32),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37501207/

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