段冲突写入 DLL 中的变量 (lcc-win32)
Segment violation writing to variable in DLL (lcc-win32)
我已经构建了一个包含一些函数和全局变量的 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。
我已经构建了一个包含一些函数和全局变量的 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。