导航
  • 主页
  • Windows SDK/API
  • 基础类
  • ActiveX
  • 数据库及相关技术
  • 网络及通讯开发
  • VCL组件使用和开发
  • 问答

带out的用法

gum 2000-07-28 01:53:00
$$$.lib 声明文件:$$$.h

$$$.h

#ifndef FT_DEFINED
#define FT_DEFINED

#ifndef FT_DLL_INTERFACE

#ifdef __cplusplus
#define FT_DLL_INTERFACE extern "C" __declspec(dllimport)
#else
#define FT_DLL_INTERFACE __declspec(dllimport)
#endif
...

FT_DLL_INTERFACE
void FT_getVersion(
OUT FT_VERSION_PT versionPt); /* software version */
...

typedef struct
{
unsigned major;
unsigned minor;
unsigned build;
}
FT_VERSION, *FT_VERSION_PT;
以上为结构等的声明。
************************************************************

void __fastcall TForm1::Button2Click(TObject *Sender)
{
1) HINSTANCE hdl;
2) FT_VERSION_PT versionPt;
3) typedef int _stdcall(*GetVersion)(FT_VERSION_PT);
4) GetVersion lpGetVersion;
5) int ddd;

6) hdl = LoadLibrary("$$$.dll");7
7) if(!hdl)
Form1->Close();
8) lpGetVersion =(GetVersion)GetProcAddress(hdl,"FT_getVersion");
9) if(lpGetVersion!=(FARPROC)NULL)
10) ddd=lpGetVersion(versionPt);
11) FreeLibrary(hdl);

}
第8行 lpGetVersion 可得到函数的指针
第10行 报告versionPt :"read of address "fffffffff""


...全文
126 点赞 收藏 3
写回复
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
丁卡尔 2000-08-05
哦,对了,函数声明的时候
3) typedef int _stdcall(*GetVersion)(FT_VERSION_PT);

声明成
3) typedef int _stdcall(*GetVersion)(FT_VERSION_PT *);

回复
丁卡尔 2000-08-05
将第10行改成ddd=lpGetVersion(&versionPt);
回复
Wingsun 2000-07-28
versionPt没有初始化吧
versionPt=new FT_VERSION_PT;
回复
发动态
发帖子
C++ Builder
创建于2007-08-02

1.3w+

社区成员

C++ Builder相关内容讨论区
申请成为版主
社区公告
暂无公告