调用c ++库中定义的函数时,来自c#的AccessViolationException

时间:2011-02-25 13:14:58

标签: c# c++ interop access-violation

我们有一个C ++库,其中定义和导出了一些方法,并且我们的.NET(V 3.5)应用程序正在使用这些方法。在c ++库中,函数定义如下

int DLLEXPORT RunAnalysis(long *time, long handle, int *Status)
{
// some code...
}
<。> .Net汇编

宣言

[DllImport("wt3145.dll")]
private static extern int RunAnalysis(ref long Time, long Handle, ref int status);

用法

// Some work..
 ErrorCode = RunAnalysis(Time, ref Handle, ref Status);
// Some other work



每次遇到此调用时都会发生AccesViolationException。它仅在我使用ref关键字传递第二个参数时才会得到解决,尽管它没有使用指针传递。

这种行为的任何具体原因???

1 个答案:

答案 0 :(得分:3)

[DllImport("wt3145.dll")]
private static extern int RunAnalysis(ref int Time, int Handle, ref int status);
C ++中的

long与C#中的long不同。