调用本机代码时抛出 ExecutionEngineException
我有一个由 C 库导出的函数,其签名如下:
extern "C" BOOL Func()
该函数在 VB.NET 代码中声明如下:
Private Shared Function Func() As Boolean
End Function
问题是我得到一个当我从 .NET 代码调用该函数时,出现 ExecutionEngineException。
鉴于此 C 代码中 BOOL
的类型定义为 int
,声明是否应该有所不同?如果是这样,我应该如何声明?作为 Short
或 Int32
?我需要整理返回值吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
C 函数不返回真布尔值,而是返回整数。您可能需要对其进行正确编组。
编辑:另外,你应该使你的函数静态。
The C function doesn't return a true boolean, it returns an integer. You might need to marshall it propery.
Edit: Also, you should make your function static.