C++
----------------------------------------------------------------
#define TEST_DLL extern "C" __declspec(dllexport)
// 1. 'int' Return
TEST_DLL int Test_Sum(int Num1, int Num2);
// 2. 'void' Return
TEST_DLL void Test_Output();
// 3. 'void*' Return
TEST_DLL void* CreateUser();
VB
----------------------------------------------------------------
' 1. 'int' Return
Declare Function Test_Sum Lib "TestDll.dll" (ByVal Num1 As Integer, ByVal Num2 As Integer) As Integer
' 2. 'void' Return
Declare Sub Test_Output Lib "TestDll.dll" ()
' 3. 'void*' Return
Declare Function CreateUser Lib "TestDll.dll" () As Int32
기본틀은....
Declare [Function / Sub] <FunctionName> Lib "<DLL Name>" (인자들) (As 반환값)
요렇습니다
그리고 함수 선언문을 작성할 때 알아둬야 되는 몇가지 사항들입니다.
1. 해당함수가 리턴하는 값이 없는 경우(void 형 함수)에는 Sub 를 사용한다.
2. 함수의 인자가 값을 넘겨주는 경우는 ByVal 을 주소값(포인터)를 넘겨주는 경우는 ByRef를 사용한다.
3. 선언의 제일 마지막에는 해당함수의 리턴형태를 As 를 사용해서 지정해준다.
void* 함수처럼 포인터를 리턴하는 경우는 해당 바이트의 수에 맞는 데이터형을 지정한다.
( DLL 에서 32비트 데이터로 리턴을 하면 VB에서도 32비트 데이터형으로 받는다. )
선언이 끝나면 코드에서 사용이 가능한데 사용방법은 C/C++ 에서 함수의 사용과 비슷합니다.
단, Sub 로 선언한 함수의 경우는 Call 명령으로 호출해주도록 합니다.
(ex. Call Test_Output() )