C++ 写了个smdll.dll 请问如何在delphi中调用dll中的结构体,并返回其内容
smdll.dll C代码如下
typedef struct tagPackage
{
char strVarName[64];
int nInt;
float f;
DWORD dw;
double dl1;
}TP;
extern "C" __declspec(dllexport) int GetString(char *str)
{
strcpy(str, "abc");
return 0;
}
extern "C" __declspec(dllexport) int GetPacket(void *pstruct1)
{
pstruct1 = new TP();
TP *p = (TP*)pstruct1;
strcpy(p->strVarName,"aaa");
p->nInt = 123;
p->f = 3.45f;
p->dw = 0xffff;
return 0;
}
我在delphi中做了如下声明
const
Smdll='Smdll.dll';
type
PTtagPackage=^TtagPackage;
TtagPackage= record
strvarname:array[0..63] of char;
nint:integer;
f:Single;
dw:longint;
dl1:double;
end;
// 导出函数声明
function GetPacket(pstruct1:pointer):integer;stdcall;external Smdll;
function GetString(str:pchar):integer;stdcall;external Smdll;
请问高手我的DELPHI声明是否正确,程序中应如何调用DLL取得该结构体的值?
本人新手,希望能给出具体代码,十分感激!!!!
delphi 声明 c++写得代码时,数据类型转换是如何定义的呢?