我有一个C#DLL,我从本机C ++程序调用它。 由于我使用Qt和/ clr编译器选项不起作用,我按照this教程进行了桥接。
所以我有一个VS2008项目(用/ clr编译),它链接到C#DLL并包含桥类和本机类,它将接口暴露给我的C ++程序。另一个VS2008项目(没有.net东西)调用本机类(静态链接)。
我有一些问题,但现在程序至少编译了。 但是,如果我尝试运行此程序,当我尝试使用本机类时,初始化时会出现(0xc0000005)错误。 由于这在初始化时发生,我甚至没有看到,哪些DLL无法初始化。所有DLL都应该在正确的位置。
任何提示? 谢谢。
答案 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,现在它似乎正常工作。
我会再调查一下。