C#中如何调用包含函数指针的DLL?

fyjin99 2009-08-06 03:15:33
该Dll为C++版本,原本在C++中调用,如下:
typedef void (* OutputHandler)(int infotype,int param);
OutputHandler __stdcall SetOutputHandler(OutputHandler handler);
现在,我在C#中调用,写法如下:
public delegate void OutputHandler(int infotype, int param);
[DllImport("ocrdll.dll")]
public static extern OutputHandler SetOutputHandler(OutputHandler handler);
不知道这样的写法对不对?请高人指点。
...全文
69 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
超维电脑科技 2009-08-07
  • 打赏
  • 举报
回复
学习
fyjin99 2009-08-07
  • 打赏
  • 举报
回复
谢谢老大指点。
我原来的写法是对的:)
是其它地方出错了
蒋晟 2009-08-07
  • 打赏
  • 举报
回复
pinvoke语法差不多的,把->换成.,^去掉,::换成.
fyjin99 2009-08-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jiangsheng 的回复:]
How to: Marshal Function Pointers Using PInvoke

[/Quote]
这个是VC++.NET的,我想用的是C#,我不知道这两个之间如何转换,jiangsheng老大给指点一下啊:)
jiangseraph 2009-08-07
  • 打赏
  • 举报
回复
学习
fyjin99 2009-08-06
  • 打赏
  • 举报
回复
我的编译可以通过,就是运行的时候无故跳出,不知道是不是这个原因。求指点!
hecker728 2009-08-06
  • 打赏
  • 举报
回复
public static extern OutputHandler SetOutputHandler(ref OutputHandler handler);

如果你的不对,试试这个

110,569

社区成员

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

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

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