很久没有提问了,关于c++的DLL在delphi中调用的问题
调用某一数据库提供的api进行开发,中有一function,c/c++定义如下:
C format
int32 pipt_tag(
int32 pt,
char PIPTR * tag,
int32 len );
Returns
>0
System error
0
Success
-1
Point does not exist
Arguments
pt (passed)
Point number
tagname (returned)
Tagname buffer
len (passed)
Length of the passed tagname buffer
其中,PIPTR定义如下:
#define PIPTR _far
#define PIPROC WINAPI /* WINAPI = far pascal */
#elif (defined(WIN32) || defined(_WIN32))
#include <windows.h> /* WINAPI definition */
#define PIPTR
#define PIPROC WINAPI /* WINAPI = _stdcall */
#else
#define PIPTR
#define PIPROC
#endif
我在delphi中定义如下
int32=longint;
TDynamicInt32Array = array of int32;
TDynamicSingleArray = array of Single;
TDynamicCharArray=array of char;
function pipt_tag(pt:int32;tag:TDynamicCharArray;Len:int32):int32;stdcall ;external 'piapi32.dll';
调用的时候,
setlength(tagname,0);
setlength(tagname,40);
ir:=pipt_tag(688,tagname,40);
为何只能返回tagname的前12位?不知道为何?
那位帮帮我!