C# 访问非托管C++;带C的动态链接库#

C# 访问非托管C++;带C的动态链接库#,c#,c++,dll,C#,C++,Dll,我试图从一个C项目中访问一个非托管C++代码的双哑求解器DLL(),但我得到以下错误信息: 类型为“System.AccessViolationException”的未处理异常 发生在Dds.Net.dll中 其他信息:尝试读取或写入受保护内存。 这通常表示其他内存已损坏 错误似乎与调用方法有关 PAR采用三个参数 结构ddTableResults*tablep,结构parResults*presp,int vulnerable 具体而言,与传入第二个参数有关,第二个参数描述为: 结构parRe

我试图从一个C项目中访问一个非托管C++代码的双哑求解器DLL(),但我得到以下错误信息:

类型为“System.AccessViolationException”的未处理异常 发生在Dds.Net.dll中

其他信息:尝试读取或写入受保护内存。 这通常表示其他内存已损坏

错误似乎与调用方法有关 PAR采用三个参数

结构ddTableResults*tablep,结构parResults*presp,int vulnerable

具体而言,与传入第二个参数有关,第二个参数描述为:

结构parResults char parScore[2][16]; char-parContractsString[2][128]

这是我的密码: 我的c#结构:

dllimport调用函数:

[DllImport("dds.dll")]
        public static extern int Par(DdTableResults tablep, int vulnerable, ParResults parResults);
你知道我能做些什么让它工作吗


非常感谢

> P>我理解,C++签名是

int Par(struct ddTableResults *tablep, struct parResults *presp, int vulnerable)
c#1可能是

[DllImport("dds.dll")]
public static extern int Par(ref DdTableResults tablep, ref ParResults parResults, int vulnerable);

C++想要一个Point to <代码> DDTabeleRESUST> <代码> >代码> PARESUTION/COD>,没有<代码> REF> /Calp> C++,将按值传递结构。

C签名与您给我们的C++签名不匹配:<代码>公共静态外部INTAR(DDTabLeREST表,INT-脆弱性,PARREST PARREST);
vs
struct ddTableResults*tablep,struct parResults*presp,int-vulnerable
(第2和第3个参数已交换)感谢您的回复。我现在已经切换了参数,但仍然会导致SystemViolation异常。非常感谢,这解决了访问冲突,使我能够非常快速地调试程序的其余部分并使其运行!
[DllImport("dds.dll")]
public static extern int Par(ref DdTableResults tablep, ref ParResults parResults, int vulnerable);