У меня есть пример кода из MSDN, который я пытаюсь адаптировать для использования, но компилятор VBA отклоняет содержимое угловых скобок < >
. У меня есть следующий код в модуле:VBA COM interop troubles
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 или просто искать альтернативный метод вызова функции dll C++, которая, по вашему мнению, ожидает массив строк? – OOhay
@OOhay «Легче» здесь очень субъективно. Вы не используете TLB для связи с этим кодом VB.NET; использование TLB означает, что вы напрямую связываетесь с библиотекой, и вам нужно убедиться, что вы понимаете бизнес-массив/SAFEARRAY на обоих концах. Кроме того, вы не сможете отлаживать, IDE будет сбой, если вы попытаетесь. Кроме того, вы можете создать библиотеку классов видимости COM-VB.NET, которая предоставляет оболочку COM, вызывающую библиотечные функции. В этом случае у вас будет дополнительная DLL-оболочка для переноса и регистрации, но она будет проста в использовании из VBA (один вызов для CreateObject). – GSerg
Спасибо за полный ответ, как вы могли догадаться, я мало знаю о VBA;) – OOhay