动态函数的使用????

gum 2000-07-27 04:24:00
在第三方控件(采用visual c++5)有一函数定义如下:
Y_CODE Y_Context(OUT Y_HANDLE *YhdcContext);

我采用动态方式调用 代码如下:

HINSTANCE handle; //DLL模块的句柄
FARPROC lpFarProc;
Y_CODE _stdcall(*lpContext)(Y_HANDLE *YhdcContext);
//指向Y_Context函数的指针
handle = LoadLibrary("$$$.dll");
//装载$$$.dll, 得到该库句柄
lpFarProc = GetProcAddress(handle,"Y_Context");
//得到指向函数Y_Context的指针
//lpContext = (Y_CODE(__stdcall *)(Y_HANDLE *YhdcContext))lpFarProc;
//指针类型转换
FreeLibrary(handle);

程序报告指针类型转化错误
请问用out或in 修饰的参数 如何调用.
...全文
107 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
FengSC 2000-08-04
  • 打赏
  • 举报
回复
上面二位说的有理。
OUT 为 __declspec(dllexport) 是导出, IN 为 __declspec(dllimport) 导入是也。
halfdream 2000-08-03
  • 打赏
  • 举报
回复
SORRY, 上面有点错
第一句应该为
typedef Y_CODE (_stdcall *F_Context)(Y_HANDLE *);
halfdream 2000-07-27
  • 打赏
  • 举报
回复
可以跟什么OUT或IN 之类的修饰无关。
建议不要直接定义函数指针。
而是改成先typedef 定义一函数指针类型,
再用这类型定义指针,这样源码可以清晰得多。

typedef Y_CODE _stdcall(*F_Context)(Y_HANDLE *);
F_Context lpcontext;
...
...
lpcontext=(F_Context)GetProcAddress(handle,"Y_Context");
...

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧