- 1、本文档共33页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
c调用c中回调函数资料整理
C#调用C++回调函数的问题
2008年10月24日 virus
1 2 下一页
C++的回调函数中有一个参数是,是返回一个字符串,原则如下:
typedef void (*TDataEvent)(char *AData ,int ALen);
其中char *AData是从DLL中返回一个字符串,串的内存已经在DLL中分配了
下面中我在C#中定义的委托
public delegate void TDataEvent(Byte[] AData, int ALen);
下面是回调函数的设置代码:
Event = new clReceivelDllPoxy.TDataEvent(getDate);
ReceDllPoxy.AddServer(1024, Event, 2);
其中 Event是上面委托的实例,我定义成一个成员这样就不会被自己释放
下面是C#中回调函数的实现
public void getDate(byte[] AData, int ALen){//发现每次回调是 AData只有一个字节}
下面转载一个别人的代码,谢谢
using System;using System.Collections.Generic;using System.Text;using System.Runtime.InteropServices;using System.Reflection;using System.Reflection.Emit;namespace AppDllTest{ /**//// summary /// 非托管动态调用基类,基类不能直接使用,需要实现 FunTable()的虚函数 /// /summary public abstract class clDllBasePoxy { //-装入DLL--------- public bool Open(string dllFileName) { Hand = LoadLibrary(dllFileName); if (Hand == 0) { return false; } FunSet(GetFunTable()); return true; } //-关闭DLL--- public bool Close() { return FreeLibrary(Hand)!=0; } public abstract string[] GetFunTable(); //函数对应表由外部代理类通过 GetFunTable来设置 //调用Windows32下的Kernele32库中的装入函数来完成对非托管DLL的引用-------#region //调用Windows32下的Kernele32库中的装入函数来完成对非托管DLL的引用------- //-------------------------------------------------------------- [DllImport(Kernel32)] private static extern int GetProcAddress(int handle, String funcname); [DllImport(Kernel32)] private static extern int LoadLibrary(String funcname); [DllImport(Kernel32)] private static extern int FreeLibrary(int handle); private int Hand = 0; //DLL的句柄 private static Delegate GetAddress(int dllModule, string functionname, Type t) //把指针转变成C#的代理 { int addr = GetProcAddress(dllModule, functionname); if (addr == 0) { return null; } else { return Marshal.GetDelegateForFunctionPointer(new IntPt
您可能关注的文档
- 2014电算化题库(1800题).doc
- 2015-1-4简述姜冲河设计工作报告(修订).doc
- 2015-1203德州市人民医院心电方案.doc
- 2015助理电子商务师考证题库大全及答案(版可打印).doc
- 2015年安全资格培训试题.docx
- 2015年全国中考物理100套试题欧姆定律汇编.doc
- 2015高考试题——理综(海南卷)解析版.doc
- 2016年《电子商务》完整版.doc
- 2016-2017年逻辑题库.docx
- 2016年注册监理投资控制考试要点汇总.docx
- 年生产电致变色镜片产品300万套及智能防眩目后视镜总成150万套项目环评资料环境影响.docx
- 年产金银卡纸5500吨项目环评资料环境影响.docx
- 年产2000万只压力传感器芯片模组和部件研发生产新建项目环评资料环境影响.docx
- 年产3000套复合热压机模板项目环评资料环境影响.docx
- 年产塑料制品480吨迁建项目环评资料环境影响.docx
- 年产1000万件汽车零部件迁建项目环评资料环境影响.docx
- 年产PE膜PE袋500吨新建项目环评资料环境影响.docx
- 汽车空气滤清器总成技术改造项目环评资料环境影响.docx
- 年产污泥制混凝土实心砖3万方、污泥制路基商品灰土7万方项目环评资料环境影响.docx
- 年产5200万米医用导管项目环评资料环境影响.docx
文档评论(0)