vb.net — c ++: использовать DLL на Visual Basic

У меня есть третья часть DLL, написанная на Visual Basic, которую я пытаюсь использовать из C ++. У меня нет исходных и заголовочных файлов, а есть документация о том, какие у него классы и методы, включая их сигнатуру.

Я нашел несколько статей о том, что я не мог использовать эту DLL напрямую, потому что она была написана в Visual Basic, которая управляется, и я должен использовать ее через COM

  1. Регистрация DLL: regasm / codebase /tlb:ThirdPartyDll.tlb ThirdPartyDll.dll

  2. Импортируем его: #import «../Debug/ThirdPartyDll.tlb»

  3. Инициализация COM: CoInitialize (NULL);

  4. Создание объекта: ThirdPartyClassPtr ptrThirdPartyClass (_uuidof (ThirdPartyDll :: ThirdPartyClass));

  5. Вызов метода объекта: ptrThirdPartyClass-> ThirdPartyClassMethod ();

У меня следующие 2 проблемы

О. DLL была успешно зарегистрирована на шаге 1 с предупреждениями, такими как следующее, которое я проигнорировал, потому что они упоминали классы, которые мне не нужны.

Обработка предупреждений экспортера библиотеки типов ThirdPartyDll.AnotherClassThatIDontUse, ThirdPartyDll. Предупреждение: экспортер библиотеки типов обнаружил тип, производный от универсального класса и не помеченный как [ClassInterface (ClassInterfaceType.None)]. Интерфейсы классов не могут быть выставлены для таких типов. Попробуйте пометить тип с помощью [ClassInterface (ClassInterfaceType.None)] и предоставить явный интерфейс в качестве интерфейса по умолчанию для COM с помощью атрибута ComDefaultInterface.

Б. Ни один из методов, доступных в классе ThirdPartyClassPtr, не виден в коде C ++. Единственные методы, которые могут быть вызваны, являются следующими, и они не были определены ThirdPartyClass, но каким-то другим способом (вероятно, компилятором, когда он обрабатывал команду import).

  • AddRef
  • GetIDsOfName
  • GetTypeInfo
  • GetTypeInfoCount
  • взывать
  • QueryInterface
  • Релиз

Есть идеи, что может быть не так?

1

Решение

Если это VB.NET Dll, чтобы узнать, как он работает, я бы начал с написания фиктивного проекта (C #, VB, что вы предпочитаете) с использованием dll, затем вы увидите методы, свойства и т. Д., А затем вы должен быть в состоянии перевести это

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]