我们有一个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
关键字传递第二个参数时才会得到解决,尽管它没有使用指针传递。
这种行为的任何具体原因???
答案 0 :(得分:3)
试
[DllImport("wt3145.dll")]
private static extern int RunAnalysis(ref int Time, int Handle, ref int status);
C ++中的 long
与C#中的long
不同。