Этот вопрос является продолжением предыдущего вопроса ( здесь ).
Я приобрел библиотеку DLL, созданную в Visual Basic, у стороннего поставщика ( Sensor DLL.dll ). Эта DLL содержит функции для общения с датчиком, и мне нужно вызывать эти функции из программы на Visual C ++, которую я пишу. Поставщик не предоставит файл заголовка, и я не знаю Visual Basic.
У меня есть небольшое количество документации по каждой функции. Например, мне сказали, что одна функция ( Get_Data ) в DLL имеет вид:
Public Function Get_Data(ByVal Handle As String) As String
, которая будет возвращать строку со значением от -16777216 до +16777215. Это все.
В предыдущем вопросе пользователь Ганс Пассант дал этот полезный ответ:
VB6 DLL обычно является COM-сервером. На самом деле у вас есть эквивалент файла .h, в него встроена библиотека типов. Начните с Project + Properties, Common Properties, Framework и References. Кнопка «Добавить ссылку», вкладка «Обзор», выбор библиотеки DLL.
Далее View + Object Browser. Вы должны увидеть сгенерированную библиотеку Interop в списке. Откройте узел, чтобы увидеть, что там. Вы пишете обычный управляемый код, такой как gcnew, для создания COM-объекта и вызова методов интерфейса. Вам нужна минимальная документация по доступным методам, чтобы догадаться, как их следует вызывать.
Следуя этому совету, я действительно увидел список функций в DLL в Object Browser, включая Get_Data(System::String)
, однако я запутался в работе с COM-объектами, что мне не по вкусу.
Я попытался просто позвонить Get_Data(Handle);
, где Handle
- это BSTR, теперь, когда я добавил ссылку на свой проект, но она не была распознана. Я также пытался сначала позвонить CoInitialize
, но это не помогло.
Может кто-нибудь сказать мне конкретно, что мне нужно написать сейчас, чтобы вызвать функцию? Спасибо!