【发布时间】:2019-07-02 02:22:08
【问题描述】:
我查看了其他帖子,找不到解决方案。
我正在尝试使用我在 VBA 代码中创建的 C# dll,而无需添加引用。
在我的 VBA 代码中,我声明:
Public Declare Function message Lib "path_to_my_dll" _
(ByVal message As String) As String
Sub Test()
Dim hello As String
hello = message("hi!!")
Debug.Print hello
End Sub
我收到一条错误消息,提示找不到我的 dll 的入口点。
C# 代码:
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
namespace DLLImport
{
public class Class1
{
[DllImport("DLLImport", EntryPoint = "Run")]
extern string Run(string message)
{
return message;
}
}
}
提前感谢您的帮助!!
【问题讨论】:
-
您必须使用接口才能在 VBA 中使用 *.dll。我会找到我过去的答案并发布一个链接。 ===编辑=== 明白了! Link
-
这是
DllExport,而不是DllImport。 VBA 也将只使用 StdCall 调用约定。我遇到过声称可以通过非托管 c++ 调用者来做到这一点,但从未尝试过。 -
没有
Dll-Export-Attribute可用于c#,但您可以尝试this Nuget package。