如何调用VC++ 动态库的一个函数

benjiamen 2005-04-11 03:12:04
有一个C++写的动态库 MYLIB.DLL,
库中定义了一个GetData(char * reid,char * inbuf,in inlen,char *outbuf, int * outlen)的函数
函数参数说明:
reid: 返回码,
inbuf: 输入buf,实际是要传入一个记录结构型的地址给它,这个记录结构的每个域都是char型;
inlen: 输入buf的长度;
outbuf: 输出buf;
outlen: 输出buf的长度;
另这个记录结构定义如下:
typedef struct
{
char code[6]; /*代码*/
char sdate[8]; /* 开始日期 */
char edate[8]; /* 结束日期 */
}mmdata;

下面是C++中的调用这个DLL中此函数的代码片断
mmdata mdata;
char out_buf[1000];
char reid[4];
int outlen=0;
memset((char *) &mdata,0,sizeof(mdata));
memcpy(mdata.code,"000024",6);
memcpy(mdata.sdate,"20040101",8);
memcpy(mdata.edate,"20040110",8);
GetData(reid,(char *)&mdata, sizeof(mdata),out_buf,&outlen );
//函数执行成功后,在out_buf中将填充我所需要的数据

现我在DELPHI中将如何调用这个函数,主要是指如何传参数给这个函数,因为这其中还有对C++的记录结构型转CHAR 指针型的变换.希望做过这方面的指点指点,问题解决后将另加分.
QQ:43671231 验证: DELPHI CALL C++ DLL





...全文
121 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
gzmhero 2005-04-12
  • 打赏
  • 举报
回复
heluqing(鉴之小河〖挣大钱娶美女〗) ( ) 信誉:100

谢谢。
呵呵,没兴趣。
何鲁青 2005-04-12
  • 打赏
  • 举报
回复
gzmhero(hihihi) 老大,你去申请做版主把,我支持你...
benjiamen 2005-04-12
  • 打赏
  • 举报
回复
谢谢以上各位的回复
这个函数GetData(reid,(char *)&mdata, sizeof(mdata),out_buf,&outlen )的声明在DELPHI中将如何声明?是否可用PCHAR来定义呢?如
GetData(reid:Pchar,mdata:pchar,sizeof(mdata),outbuf:pchar,outlen:pinteger)
Heyongfeng 2005-04-12
  • 打赏
  • 举报
回复
char —> byte

function GetData(reid:pbyte;inbuf:pbyte;inlen:integer;outbuf:pbyte;outlen:pinteger): longint; StdCall; external 'MYLIB.DLL';
gzmhero 2005-04-11
  • 打赏
  • 举报
回复
type
MMData=record
code:array[0..5] of char;
sdate:array[0..7] of char;
edate:array[0..7] of char;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
mData:MMData;
out_buf:array[0..999] of char;
reid:array[0..3] of char;
outlen:integer;
begin
ZeroMemory(pChar(@mData),sizeof(mdata));
CopyMemory(@mdata.code[0],pChar('000024'),6);
CopyMemory(@mdata.sdate[0],pChar('20040101'),8);
CopyMemory(@mdata.edate[0],pchar('20040110'),8);
GetData(@reid[0],pChar(@mData),sizeof(mdata),@out_buf[0],@outlen);
end;
benjiamen 2005-04-11
  • 打赏
  • 举报
回复
THANK

UP UP
何鲁青 2005-04-11
  • 打赏
  • 举报
回复
没做过,人气真差,唉....帮顶,版主这个月戴不上小红花了...
benjiamen 2005-04-11
  • 打赏
  • 举报
回复
没人知道怎做吗?
顶一下

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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