本文共 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部分:
声明:
结构体定义:
如果有问题及建议,欢迎关注微信公众号: