delphi调用c编写的dll报错(100分)

  • 主题发起人 主题发起人 picmis
  • 开始时间 开始时间
P

picmis

Unregistered / Unconfirmed
GUEST, unregistred user!
各位前辈你们好,我需要你们的指点
我要调用一个c编写的dll中的函数
定义如下
function icc_reset_card(x:string): integer;stdcall;external 'icc_32.dll'
其中x为返回值类型为string;
我在过程中定义了一个y类型为string调用函数
icc_reset_card(y);
系统报错project project1.exe raised exception class eaccessviolation with message 'access violation at address 100017e7 in module 'icc_32.dll',write of address 00000000',process stopped.use step or run to continue.
如果我将x,y的类型改为shortstring可以通过但是返回值的第一位没有了不知道为什么
请各位前辈指点.还有在调用dll中还需要注意那些事项
 
C 有String类型吗?
 
Delphi 中字符串类型的第一个字节(String[0])是用来计数的!
 
你把C的原型贴上来才能帮你啊。。。。。。真是的。
 
调用DLL原型不要用string,要用PChar
 
调用DLL原型不要用string,要用PChar
对头。。
给分
 
同意用PChar,不可以用string;
 
x:string

没有这个东西,用char的数组或者用pchar,c里面只有char,没有string,vc里面的cstring是mfc的类,delphi 不认识,
 
我已经知道怎么调用了用pchar还是不好用但是用数组可以,给0桁骀,加分了
 
后退
顶部