我正在尝试使用为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
欢迎任何帮助。
谢谢!