C++:
#define DEV_CLASS_VOICE "Voice"extern long __cdecl sr_getboardcnt(char *brdname, int *brdcnt); //一个库文件里引出的函数C++调用如下
int numvoxbrds = 0;sr_getboardcnt(DEV_CLASS_VOICE,&numvoxbrds); 函数返回成功,不等于-1.
Pascal:
const
DEV_CLASS_VOICE = 'Voice'; function sr_getboardcnt(brdname: PChar; brdcnt: PINT): LongInt; cdecl;pascal调用如下
var
numvoxbrds: integer;
begin
numvoxbrds := 0;
sr_getboardcnt(DEV_CLASS_VOICE, @numvoxbrds); 函数返回不成功,等于-1;
end;请问各位高手,这是为什么,难道是参数Char * 转成PChar格式不对.帮忙指点一下.
#define DEV_CLASS_VOICE "Voice"extern long __cdecl sr_getboardcnt(char *brdname, int *brdcnt); //一个库文件里引出的函数C++调用如下
int numvoxbrds = 0;sr_getboardcnt(DEV_CLASS_VOICE,&numvoxbrds); 函数返回成功,不等于-1.
Pascal:
const
DEV_CLASS_VOICE = 'Voice'; function sr_getboardcnt(brdname: PChar; brdcnt: PINT): LongInt; cdecl;pascal调用如下
var
numvoxbrds: integer;
begin
numvoxbrds := 0;
sr_getboardcnt(DEV_CLASS_VOICE, @numvoxbrds); 函数返回不成功,等于-1;
end;请问各位高手,这是为什么,难道是参数Char * 转成PChar格式不对.帮忙指点一下.
修改成
function sr_getboardcnt(brdname: PChar; var brdcnt: integer): LongInt; cdecl;
function sr_getboardcnt(brdname: PChar; brdcnt: PINT): LongInt; cdecl;
修改成
function sr_getboardcnt(brdname: PChar; var brdcnt: integer): LongInt; cdecl;
这样也没有作用,其实和上面的写法是同样的.帮忙看看有没有其它办法.其他人对我的问题可能有误会,我给的只是函数声明,意思是帮我看看参数有没有转错,引用动态库在实现部分已经做了.不过还是谢谢大家.
const
DEV_CLASS_VOICE = 'Voice'#0;
是对设备操作,但是写了同样的C++代码调用成功啊!Delphi却不行.郁闷啊......To:DelphiGuy
Object Pascal对AnsiString类型本身就是#0结尾的,所以没有需要写的
sr_getboardcnt('Voice', @numvoxbrds);
试试。
试过了,直接写或者把'Voice'赋值给一个变量再传进去都试过的,照样不行.但是在VC 6.0里写就可以,直接写"Voice"也可以.这是为什么,郁闷!
sr_getboardcnt(PChar(DEV_CLASS_VOICE), @numvoxbrds);
最开始也是这么写的,试过了,没用!谢谢大家,如果语法没有错,看来我要再找找其他的原因了!