读书人

怎么将这个C函数转成Delphi 的函数

发布时间: 2012-02-06 15:52:45 作者: rapoo

如何将这个C函数转成Delphi 的函数?
我不熟悉C语言这种无类型指针返回,如何转成Delphi的函数

const void* TTSLIBAPI QTTSAudioGet(const char* sessionID, unsigned int* audioLen, int* synthStatus, int* errorCode)

请教!

[解决办法]
这样?

Delphi(Pascal) code
type  pTSLIBAPI =^TTSLIBAPI;  TTSLIBAPI=record    a :Integer;  end;...function QTTSAudioGet(const sessionID:PChar;var audioLen,synthStatus,errorCode:Cardinal):pTSLIBAPI;
[解决办法]
function QTTSAudioGet(sessionID : PAnsiChar; audioLen:PDWORD; synthStatus:PInteger; errorCode:PInteger):Pointer;调用约定;external 'XXX.DLL';

TTSLIBAPI 应该是调用约定或者__declspec(dllexport) 这样声明导出的.
另外C++调用约定也可以在DEF文件中单独定义.你要知道一下这个调用约定是什么.把调用约定换上就好了.
Delphi支持的调用约定有register,cdecl,stdcall,pascal.C++支持的有__cdecl,__stdcall,__pascal.

[解决办法]
还有safecall,一般Windows的API都用stdcall/safecall
无类型指针可以用Pointer,它可以接收任何类型

function QTTSAudioGet(sessionID:PChar; audioLen:Pointer;synthStatus, errorCode:PInteger):Pointer;stdcall external 'abc.DLL';

读书人网 >.NET

热点推荐