首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

vb调用vc生成的dll,传递自定义构造体参数出错解决思路

2012-03-12 
vb调用vc生成的dll,传递自定义构造体参数出错在用vb调用vc生成的dll时,如果调用的函数参数类型为自定义构

vb调用vc生成的dll,传递自定义构造体参数出错
在用vb调用vc生成的dll时,如果调用的函数参数类型为自定义构造体类型时,编译时显示dll调用错误。代码如下:
vc部分:
typedef   struct{
int   i;
int   j;
}   Item;

__declspec(dllexport)   int   __stdcall   add(Item   item)
{
int   c   =   0;
c   =   item.i   +   item.j;
return   c;
}

EXPORTS   add   @1

vb部分:
Public   Type   ITEM
        i   As   Integer
        j   As   Integer
End   Type

Private   Declare   Function   add   Lib   "xxx.dll "   (ByRef   t   As   ITEM)   As   Integer

Private   Sub   Command1_Click()
        Dim   rt   As   Integer
        Dim     it   As   ITEM
        it.i   =   1
        it.j   =   2
        rt   =   add(it)
End   Sub

请问是什么原因?



[解决办法]
C里的INT貌似是4字节,那么在VB里就应该是LONG....

而VB里的Integer是2字节...

然后再把声明改下,返回也是LONG:

Private Declare Function add Lib "xxx.dll " (ByRef t As ITEM) As Long

试下吧.

热点排行