调用DLL传递指针参数的问题

gongluyang 2004-12-30 08:50:34
我在一个DLL中有一个函数的定义是这样的
void funca(char *p)
我在DELPHI中应该怎么调用这个函数呢???
我是这样写的
pstring : string
pstring := 'ok'
funca(@pstirng)
这样可以吗?
如果不行,请哪位大哥告诉我
我今天第一次接触DELPHI
急需要指点
感激不尽!
...全文
216 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
lylen 2005-03-16
  • 打赏
  • 举报
回复
你的DLL调用的时候有没有定义错啊?贴出来看看!
静态调用:
function funca(p:pchar):函数返回类型 stdcall;external 'DLL名称';
是否在同一目录下?
主要是数据类型的一致性!
beyondtkl 2004-12-31
  • 打赏
  • 举报
回复
呵呵 是呀 调用DLL我刚想到的

1.被调用方:确定你的DLL有正确的导出函数 如果是vc的话 可以使用dumpbin /exports your.dll 查看
2.调用方: 动态+静态 加载 暂不区分方式之类的
为导入函数进行相应的声明 这时候需要注意
2.1 数据类型的对应
2.2 调用方式的一致

一般来说 都差不多了。。
zl54 2004-12-31
  • 打赏
  • 举报
回复
大哥 DLLIMPORT 关键字错误!!!!!!!!!!!!!!
DLLEXPORT!!!!!!!!!!
gongluyang 2004-12-30
  • 打赏
  • 举报
回复
不会的,因为我用VB调用的时候没有错,但现在在DELPHI里调用setMyPCName后就是乱码
这是怎么回事呢?
我觉得还是参数的问题,
可能他给DLL传的是个指针的指针,所以就显示乱码
herman~~ 2004-12-30
  • 打赏
  • 举报
回复
估计是你dll函数写错了,贴出来 看看啦
gongluyang 2004-12-30
  • 打赏
  • 举报
回复
然后是用command prompt 编译的

gongluyang 2004-12-30
  • 打赏
  • 举报
回复
DLLIMPORT void setMyPCName(char *c_name)
{
strcpy(pcName, c_name);
}

DLLIMPORT void setMyPCFileList(char **p)
{
pPathList=p;
}

DLLIMPORT void stopMyPC( )
{
TerminateThread(hControlThread , 0) ;
TerminateThread(hDataThread , 0);
TerminateThread(hBrdcstThread , 0);
}
DLLIMPORT int startMyPC( )
{}

这是那个几个函数的定义
那么要怎么样调用呢??
谢谢了!!!!!!
boatzm 2004-12-30
  • 打赏
  • 举报
回复
你的函数定义是否是对的哦?

贴出来看看~
gongluyang 2004-12-30
  • 打赏
  • 举报
回复
是cdecl和stdcall
在DELPHI里面分别怎样处理???
我在线等
谢谢大家的帮助!
gongluyang 2004-12-30
  • 打赏
  • 举报
回复
也不行啊
他会报一个错:
incompitable types:'array' and 'pointer'
类型不对吗?
boatzm 2004-12-30
  • 打赏
  • 举报
回复
对了注意调用约定,stdCall,还是cdecl以及其他东西。。。。
boatzm 2004-12-30
  • 打赏
  • 举报
回复
pChr : array[0..1023] of Char;

funca(pChr);

一般这种应该还要传个len 。要不怎么知道,填多少?
gongluyang 2004-12-30
  • 打赏
  • 举报
回复
执行到AllocMem(pchr);时会报错:
incompitable types:'cardinal' and 'pansichar'
这是什么错误??
我今天刚学DELPHI,不好意思,这种问题也问大家
但我明天要出东西,所以比较急
「已注销」 2004-12-30
  • 打赏
  • 举报
回复
pchr :PChar;
AllocMem(pchr);//分配内存
pchr := PChar('ok');
funca(pchr)
gongluyang 2004-12-30
  • 打赏
  • 举报
回复
不行啊,大哥
是乱码
估计传错了参数
Kevin_Lmx 2004-12-30
  • 打赏
  • 举报
回复
pchr :PChar;

pchr := PChar('ok');
funca(pchr)

5,402

社区成员

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

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