Функция или интерфейс помечены как ограниченные, либо функция использует тип автоматизации, не поддерживаемый в Visual Basic - PullRequest
5 голосов
/ 19 октября 2010

Что означает эта ошибка в VB6?

Функция или интерфейс помечены как ограниченные, или функция использует тип автоматизации, не поддерживаемый в Visual Basic.

Iпродолжайте получать его, когда я вызываю определенный метод DLL, который поставляется с Windows XP и выше (в system32, называется upnp.dll)

Ответы [ 3 ]

9 голосов
/ 19 октября 2010

Это объявление для FindByType (), полученное из библиотеки типов:

    HRESULT FindByType(
                    [in] BSTR bstrTypeURI, 
                    [in] unsigned long dwFlags, 
                    [out, retval] IUPnPDevices** pDevices);

Обратите внимание на 2-й аргумент, unsigned long. VB6 не поддерживает неподписанные типы. Это не проблема в VB.NET или C #, они их поддерживают.

Эта проблема исправлена, если у вас установлен Windows SDK. Это должно быть у вас, если у вас последняя версия Visual Studio. Используйте командную строку Visual Studio, затем:

  • запустите oleview.exe c: \ windows \ system32 \ upnp.dll
  • введите Ctrl + A, Ctrl + C, чтобы скопировать содержимое библиотеки типов
  • запустить notepad.exe, Ctrl + V. Найдите «unsigned» и удалите его. Их два.
  • сохранить файл во временный каталог с именем upnp.idl
  • запустить midl upnp.idl / tlb upnp.tlb
  • скопировать сгенерированный файл upnp.tlb в каталог вашего проекта

Теперь вы можете добавить upnp.tlb вместо upnp.dll, вы больше не должны получать ошибку. -

3 голосов
/ 19 октября 2010

Ну, сообщение об ошибке означает, что вы вызываете функцию, которая не может быть связана с VB6, возможно, из-за того, что у нее есть параметры или возвращаемое значение типа данных, который VB6 не поддерживает. Иногда я решал подобные проблемы, написав простой C ++ COM-объект, который вызвал функцию и «перевел» ее на VB6-совместимость.

Иногда вы можете также получить это сообщение об ошибке из-за различных опечаток, но я думаю, что вы уже обнаружили это с помощью своего поиска в Google, поэтому я предполагаю, что вы уже проверили это.

Если вы отправите свой код (или хотя бы название функции, с которой у вас возникли проблемы), возможно, вы сможете получить лучший ответ.

1 голос
/ 17 августа 2012

Я получил ту же ошибку, но когда я изменил имя массива, ошибка исчезла.

«Карта», по-видимому, не является допустимым именем массива.

код ошибки: map(day, min) = Trim(Str(Int(r / 1000)))

без кода ошибки: mapsymbol(day, min) = Trim(Str(Int(r / 1000)))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...