标记为受限制的函数或接口,或者该函数使用Visual Basic中不支持的自动化类型

Erx*_*der 5 .net c# vb.net vb6 visual-studio

这个错误在VB6中意味着什么?

标记为受限制的函数或接口,或者该函数使用Visual Basic中不支持的自动化类型.

当我调用windows xp及更高版本附带的dll的特定方法时,我一直得到它(在system32中称为upnp.dll)

Han*_*ant 9

这是从类型库中检索的FindByType()声明:

    HRESULT FindByType(
                    [in] BSTR bstrTypeURI, 
                    [in] unsigned long dwFlags, 
                    [out, retval] IUPnPDevices** pDevices);
Run Code Online (Sandbox Code Playgroud)

注意第二个参数,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,您应该不再收到错误. -