VBA找不到C#DLL的入口点

时间:2020-05-29 02:06:24

标签: c# vba dll dllexport entry-point

我正在尝试使用为VBA构建的C#DLL。我正在使用RGiesecke.DllExport,但始终会收到错误:ClassLibrary1中找不到的DLL的ExtCallTest入口点。

我已经看过下面帖子的解决方案,但这不是我想要的。我不想参考图书馆。我希望能够使用kernel32 LoadLibraryA加载库。

VBA can't find C# dll entry point

我的DLL是使用平台target = 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

欢迎任何帮助。

谢谢!

0 个答案:

没有答案