Public Function Hallo(ByVal sName As String) Return sName & "sasaki" End Function End Class
以下、EXCELのVBAマクロ----------------------------------- '動的にDLLを取得するためのWinAPI Private Declare PtrSafe Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As LongPtr Private Declare PtrSafe Function GetProcAddress Lib "kernel32" (ByVal hModule As LongPtr, ByVal lpProcName As String) As LongPtr Private Declare PtrSafe Function FreeLibrary Lib "kernel32" (ByVal hLibModule As LongPtr) As Long 'DLLファイルの関数定義 Private Declare PtrSafe Function Hello Lib "ClassLibrary1.dll" (ByVal sName As String) As String
Public Sub maintest() Dim hDll As LongPtr Dim hProc1 As LongPtr Dim hProc2 As LongPtr Dim sFolderPath As String Dim iFileSize As Long Dim sFilePath As String
'DLLファイルの指定関数のアドレス取得 hProc1 = GetProcAddress(hDll, "Add") 'ここでエラーとなり取得出来ない、値=0 hProc2 = GetProcAddress(hDll, "Hallo") 'Halloで試みるが同じ結果 If hProc1 = 0 Then Call MsgBox("DLLファイルの読み込みに失敗しました") Call FreeLibrary(hDll) Exit Sub End If
Console.WriteLine (Class1.Add(20)) '30 'DLL解放 Call FreeLibrary(hDll) End Sub