您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> .NET >> 求助,调用动态库问题,各位大神帮帮忙啊

求助,调用动态库问题,各位大神帮帮忙啊

来源:网络整理     时间:2016/5/7 17:00:40     关键词:动态,大神

关于网友提出的“求助,调用动态库问题,各位大神帮帮忙啊”问题疑问,本网通过在网上对“求助,调用动态库问题,各位大神帮帮忙啊”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题:求助,调用动态库问题,各位大神帮帮忙啊
描述:

本人新手,刚接手了一个项目,对于动态库引用这块 ,有很多不太了解,希望各位大神们能帮帮忙


/// 
/// 实时数据回调函数
/// 

/// NET_SDK_RealPlay 返回值
/// 视频数据
/// 数据长度
/// 视频详细信息
/// 用户数据
typedef void (CALLBACK *fnRealDataCallBack) (LONG nRealHandle, unsigned char* pBuffer, LONG nSize, LPFrameInfo lpFrame, void* pUser);
//============================实时预览===================================
/// 
/// 实时预览
/// 

/// NET_SDK_Login的返回值
/// 预览参数
/// 预览回调数据,非解码数据
/// 用户数据
/// -1失败,其他值作为NET_SDK_StopRealPlay等函数传入参数
IRLABNETSDK_API LONG __stdcall NET_SDK_RealPlay(LONG nLoginID, LPNET_SDK_ClientInfo lpClientInfo, 
fnRealDataCallBack fuRealDataCB = NULL, void* pUser = NULL)

这是动态库的部分接口函数,我想在c#调用NET_SDK_RealPlay这个函数,怎么实现?对于c#调用回调函数这块,真的是不太理解,网上收索很多资料,但是看了感觉还是迷迷糊糊的
解决方案1:

Mark,你可以根据你的项目名称搜索一下

解决方案2:

 void (CALLBACK *fnRealDataCallBack) (LONG nRealHandle, unsigned char* pBuffer,)
==》
Action Action_CallBack = delegate( long ln , string s ){    } ;
LONG __stdcall NET_SDK_RealPlay(LONG nLoginID, LPNET_SDK_ClientInfo lpClientInfo, 
    fnRealDataCallBack fuRealDataCB = NULL, void* pUser = NULL)
==>>
long  NET_SDK_RealPlay(  long  nloginID ,  obj   ,lpClientInfo,  int callback ,  out object pUser) ;
上面的代码还要加Dll...,这里就不写了,主要是如何调用这个函数(下面是伪代码)
Inptr p = Marshal.GetFunctionPointerForDelegate( Action_CallBack  );
int  intP = p.toInt();
object  obj =null ;
Marshal.getObjectFor
 
long  rs =  NET_SDK_RealPlay( 111 ,  new object()  , intP ,  out obj ) 
大概是这样子的思路吧,这里还涉及了一些非托管的控制技术,看一下另写的非托管代码吧,应该有这方面的示例
(我没空了)


以上介绍了“求助,调用动态库问题,各位大神帮帮忙啊”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/961257.html

相关图片

相关文章