1
我有一些来自MSDN的示例代码,我试图适应其使用,但VBA编译器拒绝了角度括号< >
的内容。我有一个模块在下面的代码:VBA COM互操作问题
Imports System
Imports System.Runtime.InteropServices
<DllImport("../../insert_dll_name_here.dll", CallingConvention:=CallingConvention.Cdecl)> _
Public Function Test(file() As String) As Integer
End Function
我想利用这个代码来调用从C一个简单的函数++动态链接库将字符串数组,但我得到的编译错误“预计行号或标号或声明或声明的结尾“,并且没有找到可用于任何用途的帮助菜单。我已经试过方括号[ ]
以防万一这是VBA版本的问题无济于事。有人能指出我在使用COM互操作服务时的错误。
是的,你说得对,显然我在星期一早上阅读MSDN主题的能力值得怀疑。那么,使用类型库链接到这段VB.net还是更容易一些,或者只是寻找另一种调用C++ dll函数的方法,这种方法需要在您看来有一系列字符串? – OOhay
@OOhay“更容易”是非常主观的。你不使用TLB链接到这个VB.NET代码;使用TLB意味着您直接链接到库,并且您必须确保您了解两端的字符串数组/ SAFEARRAY业务。此外,您将无法进行调试,如果尝试,IDE将崩溃。或者,您可以创建一个VB.NET COM可见类库,公开一个调用库函数的COM包装器。在这种情况下,您将拥有附加的包装器DLL来进行注册,但从VBA(对CreateObject的单个调用)使用起来会很容易。 – GSerg
感谢您的完整答案,您可能已经猜到了,我对VBA知之甚少;) – OOhay