VB工程中使用VC++编写的动态联接库

李志 leezhi76@yeah.net http://vbsite99.163.net/

1、在VC++中新建MFC AppWizard(DLL)工程vcdll:
vcdll.cpp的代码如下:
#include "stdafx.h"
#include "vcdll.h"

long sum1(); //无参类型
extern "C" int APIENTRY sum2(int i); //从VB中接收一个参数
extern "C" long APIENTRY sum3(int i,int j); //从VB中接收两个参数

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

BEGIN_MESSAGE_MAP(CVcdllApp, CWinApp)

END_MESSAGE_MAP()

CVcdllApp::CVcdllApp()
{
}

CVcdllApp theApp;

long sum1()
{ return 100+200; }

extern "C" int APIENTRY sum2(int i)
{ i+=100;
return i;
}

extern "C" long APIENTRY sum3(int i,int j)
{ return i+j;
}

2、在vcdll.def中的代码如下:
LIBRARY "vcdll"
DESCRIPTION 'vcdll Windows Dynamic Link Library'

EXPORTS
; Explicit exports can go here
sum1
sum2
sum3
3、在编译后,把vcdll.dll拷贝到Windows目录下。
4、VB中新建标准EXE工程vb_vcdll,vb_vcdll.frm的代码如下:
Private Declare Function sum1 Lib "vcdll.dll" () As Long
Private Declare Function sum2 Lib "vcdll.dll" (ByVal i As Integer) As Integer
'声明VC库中的函数
Private Declare Function sum3 Lib "vcdll.dll" (ByVal i As Integer, ByVal j As
Integer) As Long

Private Sub Command1_Click()
Text1.Text = sum1() '调用VC函数
End Sub

Private Sub Command2_Click()
Text1.Text = sum2(110)
End Sub

Private Sub Command3_Click()
Text1.Text = sum3(100, 250)
End Sub