例子……三月份的时候写过一个,现在手上没有VB(说实话,我很讨厌VB的),我仅仅实现了返回int,VB用long接受而已……好像还有一个要注意的地方是调用协议,VB里面似乎需要使用__stdcall(WINAPI即是这个协议的宏定义)才行声明需要使用这个语法 Public Declare Function Function Lib "dllname" Alias "funcname" (varname) As ret_typevarname是参数名称和类型,需要小心的是C里面传递指针的地方需要用ByRef,而传递值的地方需要使用ByVal
// vbdll.cpp : Defines the entry point for the DLL application. //#include <windows.h>BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { return TRUE; }long __stdcall Addition(long a, long b) { return (a + b); }// def ; vbdll.defEXPORTS Addition // vb 中调用Private Declare Function Addition Lib "vbdll" (ByVal a As Long, ByVal b As Long) As LongPrivate Sub Form_Load() Dim i As Long i = Addition(1, 2) End Sub
1.首先在VC中建立一個靜態DLL Project. BOOL APIENTRY DllMain(HANDLE hInst, DWORD ul_reason_being_called, LPVOID lpReserved) { return TRUE; UNREFERENCED_PARAMETER(hInst); UNREFERENCED_PARAMETER(ul_reason_being_called); UNREFERENCED_PARAMETER(lpReserved); }2.在DLL中加入你的函數及接口: Explain: __declspec(dllexport) INT WINAPI GetNumericSum(INT a,INT b) { return a + b; }3.EXPORTS Dll function: 加一個.Def文件,手工鍵入: LIBRARY MyVbTest EXPORTS GetNumericSum @0014.編譯,生成DLL.Copy到Windows目錄.5.在VB中宣告函數. Private Declare Function GetNumericSum Lib "MyVbTest.dll" (ByVal a As Long, ByVal b As Long) As Long6.使用:Dim nSum as Long nSum = GetNumericSum(100,20);ok...
Public Declare Function Function Lib "dllname" Alias "funcname" (varname) As ret_typevarname是参数名称和类型,需要小心的是C里面传递指针的地方需要用ByRef,而传递值的地方需要使用ByVal
//#include <windows.h>BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}long __stdcall Addition(long a, long b)
{
return (a + b);
}// def
; vbdll.defEXPORTS
Addition
// vb 中调用Private Declare Function Addition Lib "vbdll" (ByVal a As Long, ByVal b As Long) As LongPrivate Sub Form_Load()
Dim i As Long
i = Addition(1, 2)
End Sub
BOOL APIENTRY DllMain(HANDLE hInst, DWORD ul_reason_being_called, LPVOID lpReserved)
{ return TRUE;
UNREFERENCED_PARAMETER(hInst);
UNREFERENCED_PARAMETER(ul_reason_being_called);
UNREFERENCED_PARAMETER(lpReserved);
}2.在DLL中加入你的函數及接口:
Explain:
__declspec(dllexport) INT WINAPI GetNumericSum(INT a,INT b)
{
return a + b;
}3.EXPORTS Dll function:
加一個.Def文件,手工鍵入:
LIBRARY MyVbTest
EXPORTS
GetNumericSum @0014.編譯,生成DLL.Copy到Windows目錄.5.在VB中宣告函數.
Private Declare Function GetNumericSum Lib "MyVbTest.dll" (ByVal a As Long, ByVal b As Long) As Long6.使用:Dim nSum as Long
nSum = GetNumericSum(100,20);ok...