我在VB中向VC做的DLL中传递结构体。例如我船入实参dd1,在DLL中处理好后存入dd并返回,可结果不对啊!
VB中代码:
Declare Function cardconfig1 Lib "aa.dll" (dd1 As config, dd As config) As config
Type config
intermit As Integer
address As Integer
End Type
'-------------------------------------
Private Sub Command1_Click()
Dim dd1 As config,dd as config
dd1.intermit = 100
dd1.address = 200
dd = cardconfig1(dd1)
Print dd1.intermit
Print dd1.address
Print dd.intermit
Print dd.address
End sub
'=======================================
VC做的DLL中的代码:
//aa.cpp
#include "dllZZW.h"
struct config WINAPI cardconfig1(struct config dd1)
{
cardconfig1.intermit =dd1.intermit+1;
cardconfig1.address =dd1.address+1;
return dd;
}//dllZZW.h
#ifndef dllZZW_H_H
#define dllZZW_H_H
struct config
{
unsigned short int intermit;
unsigned short int address;
} card_config; #endif dllZZW_H_H//aa.def
LIBRARY "aa"
DESCRIPTION 'aa Windows Dynamic Link Library'
EXPORTS cardconfig1请那位高手指点。最好帮我调试好,谢谢!
VB中代码:
Declare Function cardconfig1 Lib "aa.dll" (dd1 As config, dd As config) As config
Type config
intermit As Integer
address As Integer
End Type
'-------------------------------------
Private Sub Command1_Click()
Dim dd1 As config,dd as config
dd1.intermit = 100
dd1.address = 200
dd = cardconfig1(dd1)
Print dd1.intermit
Print dd1.address
Print dd.intermit
Print dd.address
End sub
'=======================================
VC做的DLL中的代码:
//aa.cpp
#include "dllZZW.h"
struct config WINAPI cardconfig1(struct config dd1)
{
cardconfig1.intermit =dd1.intermit+1;
cardconfig1.address =dd1.address+1;
return dd;
}//dllZZW.h
#ifndef dllZZW_H_H
#define dllZZW_H_H
struct config
{
unsigned short int intermit;
unsigned short int address;
} card_config; #endif dllZZW_H_H//aa.def
LIBRARY "aa"
DESCRIPTION 'aa Windows Dynamic Link Library'
EXPORTS cardconfig1请那位高手指点。最好帮我调试好,谢谢!
Declare Function cardconfig1 Lib "aa.dll" (dd1 As config) As config
2. Integer类型可能存在对齐的问题。你的VB里面的类型声明改成这样试试:
Type config
intermit As Integer
spacer As Integer
address As Integer
spacer2 As Integer
End Type不需要给spacer(2)赋值。3. 注意unsigned。
可以把动态库函数参数定义成指针类型struct config *dd1,然后在vb里是按引用调用该函数,也可以实现你的功能