无法使用VBA中的string调用VB.NET COM DLL函数
我用一个简单的testing函数实现了一个VB.NET DLL:
<ComVisible(True)> Function TestString ( <MarshalAs(UnmanagedType.BStr)> xyz As String) As <MarshalAs(UnmanagedType.BStr)> String Dim y As Integer TestString = "Hello" End Function
这个function很简单。 在VBA中,我适当地声明了这个函数:
Public Declare Function TestString Lib "myDLL.dll" (xyz As String) As String
从VBA我也显然加载DLL。 然而问题是,当我运行这样的function:
Dim st as String st = "Hello" Debug.Print TestString(ByVal st)
我收到一条消息说错误的DLL调用约定。 另一方面,当我删除<MarshalAs(UnmanagedType.BStr)>
function工作,但打印"Hello"
后不久崩溃。
我究竟做错了什么?
Public Declare Function
是用于调用从DLL 导出的 Public Declare Function
的语法,这是与COM不同的机制。
要使用COM添加对DLL的引用,请创build包含TestString
的类的实例,然后调用该实例: r = classInstance.TestString("Hello")