首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

动态库中回调函数怎么使用~

2012-06-12 
动态库中回调函数如何使用~急急急~在线等这是原型typedef void(CALLBACK* vOnDeviceLogin)(int Dev_id,TSe

动态库中回调函数如何使用~急急急~在线等
这是原型
typedef void(CALLBACK* vOnDeviceLogin)(int Dev_id,TSerialType Serial,char* ip,int port,int & heartbeat);

我的头文件中定义如下

void __stdcall(CALLBACK*)(int ,TSerialType ,char* ,int ,int );

加载动态库的代码如下:

vOnDeviceLogin = (void __stdcall(CALLBACK*)(int ,TSerialType ,char* ,int ,int ))::GetProcAddress(Hdl,"vOnDeviceLogin");

这样一直加载不进来,请教大大,动态库中的回调函数。怎么调用,急急急,在线等



[解决办法]
首先确认一下DLL导出的函数名,到底是不是vOnDeviceLogin,然后:

C/C++ code
typedef void (CALLBACK *VONDEVICELOGIN)(int, TSerialType, char *, int , int &);HINSTANCE hLib = ::LoadLibrary(TEXT("dll文件名"));if (hLib){    VONDEVICELOGIN vOnDeviceLogin = (VONDEVICELOGIN)            ::GetProcAddress(hLib, "vOnDeviceLogin");    if (vOnDeviceLogin)    {        vOnDeviceLogin(参数....);    }    ::FreeLibrary(hLib);}
[解决办法]
帮解决问题,可不是代工!
写代码,主要还是靠自己!
[解决办法]
动态库是用什么开发工具写的? 如果是用C++Builder写的,函数名前缺省会加个_, 代码中要导出的函数名为vOnDeviceLogin,那dll中函数名会变成 _vOnDeviceLogin
建议用动态库查看工具Dependency Walker看了下dll的导出函数.
[解决办法]
加修饰 extern "C" __stdcall
导出函数就不会有“_”

热点排行