使用C#dll时,C ++应用程序无法初始化(0xc0000005)

时间:2010-03-23 14:08:56

标签: c# c++ dll clr

我有一个C#DLL,我从本机C ++程序调用它。 由于我使用Qt和/ clr编译器选项不起作用,我按照this教程进行了桥接。

所以我有一个VS2008项目(用/ clr编译),它链接到C#DLL并包含桥类和本机类,它将接口暴露给我的C ++程序。另一个VS2008项目(没有.net东西)调用本机类(静态链接)。

我有一些问题,但现在程序至少编译了。 但是,如果我尝试运行此程序,当我尝试使用本机类时,初始化时会出现(0xc0000005)错误。 由于这在初始化时发生,我甚至没有看到,哪些DLL无法初始化。所有DLL都应该在正确的位置。

任何提示? 谢谢。

2 个答案:

答案 0 :(得分:4)

我有类似的问题; Qt与C ++和/ clr。我为托管类创建了一个包装器,然后用Qt制作了前端,我得到了警告...

看看bytes.com上的这个讨论: __fastcall functions in a static lib, cant be called from managed code?

那里的人说用/clr编译的静态托管类与fastcall不兼容。

答案 1 :(得分:3)

调用本机类的项目静态链接到我的exe,这没有用。我将其更改为DLL,现在它似乎正常工作。

我会再调查一下。