真心求指导:vb传递结构体 给dll问题 如题
vc代码
typedef struct tagFS
{
LONG l;
double d;
};
BOOL __stdcall FSME_FS(tagFS* pTagFs)
{
FILE* f;
f=fopen("D:/out1.txt","w");
fprintf(f,"%s%.17g\n","d:",pTagFs->d);
fprintf(f,"%s%d\n","l:",pTagFs->l);
fclose(f);
return TRUE;
}
vb代码
Private Type tagFS
l As Long
d As Double
End Type
Private Declare Function FSME_FS Lib "FSMobileExchange.dll" (ByRef pFS As tagFS) As Boolean
Dim bRet As Boolean
Dim pFS As tagFS
pFS.d = 22.22
pFS.l = 2222
bRet = FSME_FS(pFS)
结果错误:
d:5.3225454133869018e-315
l:2222
[解决办法]
估计是对齐问题。试试:
typedef struct tagFS
{
LONG l;
LONG reserved;
double d;
};
Private Type tagFS
l As Long
reserved As Long
d As Double
End Type