加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

VB调用VC dll的返回方式

发布时间:2020-12-16 23:12:18 所属栏目:大数据 来源:网络整理
导读:第一种类型:数值传递 注意:在VB中,默认变量传递方式为ByRef为地址,而传递值就是用ByVal,还要注意在C++中, int类型的变量是32位的,在VB中要用long型变量来配合。 VC++部分: extern "C" _declspec(dllexport) int __stdcall TestCalc(int source){ //A

第一种类型:数值传递
注意:在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部分:

声明:

结构体定义:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读