C# 调用 C++ 回调函数中 有个参数是 文件指针

时间:2022-08-12 18:59:45
typedef void (CALLBACK *fSnapRev)(
  LLONG  lLoginID,
  BYTE   *pBuf,
  UINT   RevLen,
  UINT   EncodeType,
  DWORD  CmdSerial,
  LDWORD dwUser
);
void CLIENT_SetSnapRevCallBack(fSnapRev  OnSnapRevMessage,LDWORD    dwUser);

public delegate void CallBackImage(int lLoginID, byte[] pBuf, int RevLen, uint EncodeType, int CmdSerial, int dwUser);
[DllImport("dhnetsdk.dll")]
public static extern void CLIENT_SetSnapRevCallBack(CallBackImage OnSnapRevMessage, int dwUser);
(不用unsafe)pBuf 我要用什么类型?  用byte[] 只有一个索引

7 个解决方案

#1


该回复于2016-08-19 00:06:28被版主删除

#2


人工自顶 C# 调用 C++ 回调函数中 有个参数是 文件指针

#3


在编程中跨平台交互调用方法,凡是使用指针都是“耍流氓”,只有流氓自己才最清楚细节,不能轻易登堂入室。

所以我们对于c的链接库的c#接口库,一律要求c程序员来开发,然后由用户进行高强度的测试,而不是c#程序员来开发。以免浪费时间。

#4


如果你非要一个“技术化”的东西凑合起来用,那么任何指针都可以用一定长度的(与目标平台的长度一致的)整数来保存指针。

这就是c#程序员要做的。除此以外,c#程序员根本不用这些dll。要求c程序员必须开发和发布c#接口类库,供c#程序员调用。而不是反过来。

#5


我做的这是  大华摄像头抓图功能  我也不能让他们   为我单独开发接口啊 C# 调用 C++ 回调函数中 有个参数是 文件指针

除了用 unsafe 没有别的 办法别?

#6


两个问题
1、哪里有文件指针?
2、c++怎么调用?

#7


用byte[]就可以啊、、、

#1


该回复于2016-08-19 00:06:28被版主删除

#2


人工自顶 C# 调用 C++ 回调函数中 有个参数是 文件指针

#3


在编程中跨平台交互调用方法,凡是使用指针都是“耍流氓”,只有流氓自己才最清楚细节,不能轻易登堂入室。

所以我们对于c的链接库的c#接口库,一律要求c程序员来开发,然后由用户进行高强度的测试,而不是c#程序员来开发。以免浪费时间。

#4


如果你非要一个“技术化”的东西凑合起来用,那么任何指针都可以用一定长度的(与目标平台的长度一致的)整数来保存指针。

这就是c#程序员要做的。除此以外,c#程序员根本不用这些dll。要求c程序员必须开发和发布c#接口类库,供c#程序员调用。而不是反过来。

#5


我做的这是  大华摄像头抓图功能  我也不能让他们   为我单独开发接口啊 C# 调用 C++ 回调函数中 有个参数是 文件指针

除了用 unsafe 没有别的 办法别?

#6


两个问题
1、哪里有文件指针?
2、c++怎么调用?

#7


用byte[]就可以啊、、、