0
当我有一个由C库具有以下签名导出的函数:ExecutionEngineException抛出调用本机代码
extern "C" BOOL Func()
该函数声明在VB.NET代码:
<DllImport("mylib.dll", CallingConvention:=CallingConvention.Cdecl)>
Private Shared Function Func() As Boolean
End Function
问题是,当我从.NET代码调用函数时,我得到一个ExecutionEngineException。
鉴于BOOL
在此C代码中的类型定义为int
,该声明应该不同吗?如果是这样,我应该如何声明这一点?至于Short
或Int32
?我需要编组返回值吗?
这是否意味着我需要这样做:Private Shared Function Func()As Boolean –
2010-10-17 04:07:23
是的。但这不是你的问题,非托管代码正在破坏堆。 – 2010-10-17 10:15:31
嗨汉斯,当你说'已损坏的代码正在销毁堆'时,你是在谈论托管堆?我能做些什么来避免这种情况?我应该在非托管代码中寻找什么?据我所知,它似乎没有做任何破坏性的事情,比如分配和销毁数组。 – 2010-10-17 17:30:06