VBA не может найти точку входа C# DLL - PullRequest
0 голосов
/ 29 мая 2020

Я пытаюсь использовать 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

Любая помощь приветствуется.

Заранее спасибо!

...