调用本机代码时抛出ExecutionEngineException

时间:2010-10-17 03:00:46

标签: c vb.net pinvoke executionengineexception

我有一个由具有以下签名的C库导出的函数:

extern "C" BOOL Func()

该函数在VB.NET代码中声明如下:

<DllImport("mylib.dll", CallingConvention:=CallingConvention.Cdecl)>

Private Shared Function Func() As Boolean

End Function

问题是当我从.NET代码调用函数时,我得到一个ExecutionEngineException。

鉴于在此C代码中BOOL的typedef为int,声明是否应该不同?如果是这样,我该如何宣布这个?是Short还是Int32?我需要编制返回值吗?

1 个答案:

答案 0 :(得分:0)

C函数不返回true布尔值,它返回一个整数。您可能需要marshall it propery

编辑:此外,你应该使你的功能静止。