读书人

真心求指导:vb传递结构体 给dll有关问

发布时间: 2012-02-03 22:02:47 作者: rapoo

真心求指导: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

读书人网 >VB

热点推荐