c# - Win 32 Dll 在 Activex 中工作但在 C++/c# 测试应用程序中崩溃

标签 c# c++ dll activex

我已经编写了一个 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/

相关文章:

c++ - 封装 H.264 的 C/C++ FLV 多路复用器未按预期工作

c# - 使用 C# 获取 OpenGL 版本的最简单方法

dll - 将多个 native DLL 合并为一个 DLL

c# - 如何在 ASP.NET 网站中调用非托管代码并将其托管在 IIS 中?

c# - Excel 目标搜索算法

c# - 为什么从 Web 服务器以外的计算机查询 Active Directory 时会出现 DirectoryServicesCOMException?

javascript - 通过javascript将Input(box)中的数据添加到sql db

c++ - 如何调用返回指针数组的函数? C++

c++ - 错误 : the application was unable to start correctly

c# - 如何将服务器端代码的值设置为 TextMode ="Date"的 asp.net TextBox?