博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
VB调用VC dll的返回方式
阅读量:509 次
发布时间:2019-03-07

本文共 5273 字,大约阅读时间需要 17 分钟。

第一种类型:数值传递

注意:在VB中,默认变量传递方式为ByRef为地址,而传递值就是用ByVal,还要注意在C++中,
int类型的变量是32位的,在VB中要用long型变量来配合。
VC++部分:
.def文件
EXPORTS TestCalc

 

VB部分

声明:
调用:
第二种类型:传递字符串,主要用于字符串返回或者处理。

 

VC++部分:

.def文件
EXPORTS MidStr

VB部分:
声明:
调用:
第三种类型:传递数组和变量指针,主要用于从dll中读出大量数据

VC++部分:
.def文件
EXPORTS TestByte
VB部分
声明:
调用:
第四种类型:传递字符串数组
   
1、VB TO VC :
 
 VC部分:
     
       
VB 部分:
声明:

2、VB TO VC
VB的字符串数组是由BSTR组成的SafeArray类型,所以VB里DLL函数如此声明:
Private Declare FunctionMyFun Lib "MyDll" (ByVal strarr As Variant) As Long
建立MFC DLL工程,名为 ShowVBStrArr 编译生成 ShowVBStrArr.DLL
DLL函数原形:
在DLL工程的def文件里编辑如下:
EXPORTS
ShowVBStrArray
VB源码:
Option Explicit
Private Declare Function ShowVBStrArray Lib "xxx.dll" (ByVal pstr As Variant) As Long
Private Sub Command1_Click()
Dim prompt(1) As String
prompt(0) = "Hello"
prompt(1) = "World"
ShowVBStrArray prompt
End Sub 

 

第五种 传结构体

由于需要根据需求向DLL中传入多种值或者需要从DLL中返回多种数据,都可以传结构体,不过得注意VB和VC的类型对应。具体操作如下:VC部分:

声明:

 结构体定义:

 VB部分:

声明:

结构体定义:

 

如果有问题及建议,欢迎关注微信公众号:

你可能感兴趣的文章