用DELPHI做DLL的问题?(分数多多,奖金多多)

ZLLDJH 2000-04-26 11:19:00
在DELPHI中如果DLL函数中入口参数有多个引参,那么在VB和VC中该如何声明?
如:
Procedure Test(var Tstr:Pchar;var Tstr:Pchar);stdcall;export
在VB声明中按BYREF声明会报错!
...全文
223 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wpkiller 2000-05-24
  • 打赏
  • 举报
回复
最好将所有的参数声明改为标准的 windows 声明,所有的数据类型改为标准 windows 数据类型,无法解决的就用指针。

如上所述的情况,该为传参数的地址,就应该一点问题没有了,剩下的就是你自己在程序中处理的问题了。
ReeTed 2000-05-24
  • 打赏
  • 举报
回复
有必要这么申明吗?难道要更改指针指向的地址值
jing1979 2000-05-24
  • 打赏
  • 举报
回复
vc中的使用为:
typedef void (CALLBACK* Ltest)(char *,char *);
HINSTANCE h;
h=LoadLibrary("***.dll");
char *s1,*s2;
s1=new char;
s2=new char;
Ltest Y;
Y=(Ltest)GetProcAddress(h,"test");
(*Y)(s1,s2);
江王 2000-04-26
  • 打赏
  • 举报
回复
故且认为你的方法Delphi声明为:
procedure Test( var Tstr : PChar ); stdcall; export;

在VB中的定义为:
Declare Sub Test Lib "XXXLibName" ( ByRef Tstr As String )

值得注意的是,在Library单元中应有一个Exports声明:
Exports Test Name "Test"
否则在VB中的调用会失败
eaglet 2000-04-26
  • 打赏
  • 举报
回复
在VC 中如下声明
void Test(**char ,**char) ;
huitor 2000-04-26
  • 打赏
  • 举报
回复
PChar改为PString如何?

5,379

社区成员

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

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