C/C++内回调函数一般通过传递函数指针来实现,函数指针在C#中对应的就是委托.
// 传入函数指针
typedef void (*FUNC)(int,char*);
JNAAPI bool processCallback(int a,FUNC func);
public delegate void CallbackDelegate(int a,string param); //声明委托
// 接口定义
[DllImport("jnalib.dll", EntryPoint = "processCallback")]
public static extern bool processCallback(int a, CallbackDelegate call);
//调用示例
CallbackDelegate myDelegate = new CallbackDelegate(CallbackFunc); //需要传入回调函数名
processCallback(25, myDelegate); //最好声明委托实例为static,防止垃圾回收器的回收
然后我们就可以在CallbackFunc里面编写回调逻辑了,而JNA回调以interface作为参数,两者相差不大.
// 回调函数
public static void CallbackFunc(int a,string param)
{
Console.WriteLine("参数1: {0}", a);
Console.WriteLine("参数2:{0}", param);
}
分享到:
相关推荐
C#使用CLR调用C++的DLL库的windows完整解决方案 说明如下: 1、工程一:C++的DLL 2、工程二:C++的CLR的类库 3、工程三:C#的exe
c#调用C++动态库、执行回调函数,并回传结构体参数数据。vs2017环境编写C#和C++动态库,这个为完整工程例子,可供相关人员学习参考。
告诉你怎么用C#委托处理dll中的回调函数。有几篇文档在里面
一个是C++的DLL以及源码 一个是调用他的C#源码 都是VS2010编译测试通过
VS2017环境中,C#程序动态调用C++库中函数,并触发调用自身定义的回调函数
C# 调用 C++类成员函数, C++ 回调 C# 函数 及测试
附件是一套C#调用C++dll时,实现回调函数的Demo程序。亲测可用。
使用C++封装的VLC播放库dll,可供C#直接调用,可设置媒体状态的回调函数,使用十分简单
1、普通函数调用 2、dll内子线程回调函数 3、借助OpenCV将dll图片显示到c#句柄(暂未实现 参照https://blog.csdn.net/u012250337/article/details/51601905)
C#调用C++的dll实例,回调函数,string和int数组参数传递,在vs2010下调试通过,总结在这里,供大家参考。
C# 调用 C++ 动态库,并调用c#自身注册到动态库的函数。此项目的编程环境为VS2017.
亲测可用,java 成功调用dll函数。包含调用回调函数,springboot版本。最近由于公司业务需要,要调用dll文件,用JNA调用。
C#调用C++的dll实例,回调函数,string和int数组参数传递,在vs2019下调试通过,总结在文件夹中,特意用doc文档解释,供大家参考。
C#调用C++动态库示例程序,暂时没有文档,程序很简单,非常好懂
绝对可以运行VS2008编译通过,很简单的回调函数例子,该回调函数封装在DLL中可以供C# C++调用
有的也很简单,实际应用中,不仅需要导出类,还需要传递函数指针作为回调 /note:主函数模拟QT主程序. // 因为QT不能在CLR中运行,所以需要借助CLR生成的dll交互 // (QT)非托管C++ --> (C++/CLR)托管C++ --> ...
vc和vc#调用vc开发的DLL,利用回调函数实现DLL数据的输出。 说明: 1、“UDP通信DLL代码”文件夹内是VC开发的DLL程序源码 2、“vc#调用代码”文件夹是VC#调用“1、”生成的DLL源码 3、“VC调用代码”文件夹是VC...
对于python这样的动态语言而言,就没有c#,c++提供特殊的语法实现回调函数,因为在python中,函数也是一个对象,无论是当参数传,还是当函数的返回值,都不会有问题。 回调函数还被用来当作一个
1、C#调用C++函数 这种情况用的比较多,数据流向可以是C#流向C++,通过参数将数据传递给C++(如:SetData(double[] data));也可以是C++流向C#(如:GetData(double[] data))。 2、C++ Callback 这种情况是C++中...