Я пытаюсь использовать C# DLL, созданную для VBA. Я использую RGiesecke.DllExport, но всегда получаю сообщение об ошибке: точка входа ExtCallTest для библиотеки DLL, не найденной в ClassLibrary1.
Я уже посмотрел на решение в сообщении ниже, но это не то, что я ищу . Я не хочу ссылаться на библиотеку. Я хотел бы иметь возможность загружать библиотеку с помощью kernel32 LoadLibraryA.
VBA не может найти C# точку входа dll
Моя DLL скомпилирована с использованием целевой платформы = x86. Я создал тестовый проект только для того, чтобы убедиться, что он работает, прежде чем реализовывать его в моем реальном проекте.
C# Код
using RGiesecke.DllExport;
using System.Runtime.InteropServices;
namespace ClassLibrary1
{
static class UnmanagedExports
{
[DllExport(ExportName = "ExtCallTest", CallingConvention = CallingConvention.StdCall)]
public static long ExtCallTest(long value)
{
return value;
}
}
}
Код VBA
Option Explicit
Option Private Module
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
Public Declare Function CallTest Lib "ClassLibrary1" Alias "ExtCallTest" (ByVal value As Long) As Long
Private result As Long
Public Sub Test()
Dim a As Long
result = LoadLibrary("C:\Users\guillaume_cyr2\source\repos\ClassLibrary1\ClassLibrary1\bin\x86\Debug\ClassLibrary1.dll")
result = CallTest(123)
result = FreeLibrary(result)
End Sub
Любая помощь приветствуется.
Заранее спасибо!