⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vb调用vc写的dll的几种方式总结.txt

📁 VB调用VC写的dll的几种方式总结(有VB和VC的示例代码)
💻 TXT
字号:

第一种类型:数值传递:
注意:在VB中,默认变量传递方式为ByRef为地址,而传递值就是用ByVal,还要注意在C++中,
	int类型的变量是32位的,在VB中要用long型变量来配合。
C++:
extern "C" _declspec(dllexport) int __stdcall TestCalc(int source)
{
	//AFX_MANAGE_STATE(AfxGetStaticModuleState());
	return(++source);
}

.def文件
EXPORTS TestCalc

VB声明:
Private Declare Function TestCalc Lib "Dll.dll" (ByVal Source As Long) As Long
调用:
Dim Tint As Long
Tint = TestCalc(45)
MsgBox Tint, vbExclamation




第二种类型:传递字符串,主要用于字符串返回或者处理。
C++:
extern "C" _declspec(dllexport) int __stdcall MidStr(CHAR * src,CHAR * dest)
{
	//AFX_MANAGE_STATE(AfxGetStaticModuleState());
	strcpy(dest,src+1);
	return 0;
}

.def文件
EXPORTS MidStr

VB中声明:
Private Declare Function MidStr Lib "Dll.dll" (ByVal src As String, ByVal dest As String) As Long

调用:
Dim i As Long, s As String * 255
tempstr = "Hello!World"
i = MidStr(tempstr, s)  或者 i = MidStr("Hello!World", s)
MsgBox s, vbExclamation





第三种类型:传递数组和变量指针,主要用于从dll中读出大量数据
C++:
extern "C" _declspec(dllexport) int __stdcall TestByte(BYTE *p,int *length)
{
	//AFX_MANAGE_STATE(AfxGetStaticModuleState());
	*p=45;
	*(p+1)=46;
	*length=2;
	return 0;
}

.def文件
EXPORTS TestByte

Private Declare Function TestByte Lib "Dll.dll" (ByRef src As Any, ByRef length As Long) As Long
VB调用:
Dim a(0 To 10) As Byte
Dim i As Integer, length As Long
i = TestByte(a(0), length)
MsgBox a(0) & " " & a(1) & vbCrLf & length, vbExclamation

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -