我已经编写了一个 C++ dll,我必须为其编写一个 C# 包装器。在 Activex 包装器中,C++ 函数工作正常。但是在测试应用程序和 C# 包装器中,代码运行一次,下次我会遇到这样的内存异常。
TestApplication.exe 中 0x0055365a (msvcr80d.dll) 处的未处理异常:0xC0000005:访问冲突写入位置 0x00000001。
显示 memset 行错误的堆栈跟踪如下所示。
VOID Clear () {
if (byFeature != NULL) {
memset (this->byFeature, '\0', VF_MAX_FEATURES_SIZE - 1 ); ==> crash at this line
this->iFeatureSize = 0;
}
else
this->iFeatureSize = 0;
this->iMinutiaeCount = 0;
this->G = 255;
}
我试图在分配 byFeature 之前清除它。它在第一个周期正常运行。第二次崩溃了。
我做对了吗?
最佳答案
这是正在发生的事情。
- 您遇到的是一个错误。
- 您需要的是一个调试器。
将它加载到调试器中,在该行上放置一个断点,或者只是运行它,当发生访问冲突时,调试器会告诉您到底出了什么问题。
关于c# - Win 32 Dll 在 Activex 中工作但在 C++/c# 测试应用程序中崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13910217/