代码之家  ›  专栏  ›  技术社区  ›  Usman

为什么LoadTypeLibEx System.ArgumentException发生异常:值不在预期范围内?

  •  1
  • Usman  · 技术社区  · 16 年前

    我正在用C++或CLI加载类型库。在C语言中,它的加载成功,但它在托管C++/CLI中一次又一次地出现异常。

    LoadTypeLibEx System.ArgumentException发生异常:值未下降 在预期范围内

    在LoadTypeLib(字符串strTypeLibName,ITypeLib typeLib)

    [DllImport("oleaut32.dll", CharSet = CharSet::Unicode, PreserveSig = false)]
    static void LoadTypeLib(String^ strTypeLibName, [MarshalAs(UnmanagedType::Interface)] [Out] System::Runtime::InteropServices::ComTypes::ITypeLib^ typeLib);
    

    ITypeLib^ oTypeLib;
    LoadtypeLib(TLB, oTypeLib);
    

    我被困在这里了。请给我让路把这个例外处理掉。

    当做 乌斯曼

    1 回复  |  直到 12 年前
        1
  •  1
  •   Ben Voigt    16 年前

    使用C++ + CLI,通常您希望使用公共头文件中的原型调用API函数,而不是自己编写P/Unjk声明。编译器将使用C++互操作或P/VoCKE,取决于您是否使用/CLR或/clr:pure.

    无论如何,第二个参数应该通过引用传递。在C#中,使用 out

    void func([Out] Type% arg1);
    

    static void LoadTypeLib(String^ strTypeLibName, [Out] ComTypes::ITypeLib^% typeLib);
    
    推荐文章