引发类型为“System.ExecutionEngineException”的异常。

-宝- 2011-12-19 04:39:06
C#调用C++DLL函数,运行到此函数
[DllImportAttribute(LocateFace, EntryPoint = "KthIdentifyFace")]
private static extern Int32 Kth_IdentifyFace(Int32 hIdentify, Int32 hWatchList, Int32 hImage, out SFacePos pFacePosition, SSearchDate pSearchDate, out SProperties Properties, ref SResultList pResultList);引发类型为“System.ExecutionEngineException”的异常。
...全文
1100 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
-宝- 2011-12-27
  • 打赏
  • 举报
回复
这个问题解决了,是输入的参数问题,这个函数后面四个参数都是结构体类型,而结构体中又定义了成员变量为结构体指针。数据类型比较复杂,在C# 里也定义指针类型,将这个几个结构体定义为c++中的指针,把指针类型定义为不安全代码,问题就解决了;遇到这种错误一般的都是参数问题。大家可以引以为戒了!
sdl2005lyx 2011-12-19
  • 打赏
  • 举报
回复
你这个函数涉及到sFacePos、sseachDate、sProperty、sProperty结构体的类型,
你也要把这些结构体贴出来,要一起进去转换。。。。
-宝- 2011-12-19
  • 打赏
  • 举报
回复
这是开发包里的函数,我按照他们要求的数据类型来写的。int Kth_IdentifyFace( int hIdentify,int hWatchList, int hImage, const sFacePos* pFacePosition, sseachDate
SearchData, const sProperty* Properties, sresultList* pResultList );
后四个数据类型是结构体,这是C++写的开发包函数
sdl2005lyx 2011-12-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 yuanxc88 的回复:]

这个是封装好了的,我看不到只能用下。
[/Quote]
晕!,你看不到原型,那这个C#的声明依据是什么?

用VC的工具DEPENDS.EXE打开这个dll,就会看到所有的函数和它的参数。。。
-宝- 2011-12-19
  • 打赏
  • 举报
回复
这个是封装好了的,我看不到只能用下。
快溜 2011-12-19
  • 打赏
  • 举报
回复
参数类型有问题。
youzelin 2011-12-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sdl2005lyx 的回复:]

你把这个函数的C++原型贴出来,同时也把C#使用的几行代码也贴出来。。。
[/Quote]

+1

只有看原型,参照一下,才能知道哪里错了。
熙风 2011-12-19
  • 打赏
  • 举报
回复
private static extern Int32 Kth_IdentifyFace(Int32 hIdentify, Int32 hWatchList, Int32 hImage, out SFacePos pFacePosition, SSearchDate pSearchDate, out SProperties Properties, ref SResultList pResultList);

把Out去掉看下
sdl2005lyx 2011-12-19
  • 打赏
  • 举报
回复
你把这个函数的C++原型贴出来,同时也把C#使用的几行代码也贴出来。。。

111,077

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧