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

McSal.GeActuvObjo对象从C++/CLI中抛出错误,但不是C

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

    我试图通过COM访问正在运行的应用程序实例RationalRhapsody。我正在尝试使用C++/CLI COM调用。
    从C++调用:

    rhapsody::RPApplication^ App = safe_cast<rhapsody::RPApplication^>( Marshal::GetActiveObject("Rhapsody.Application"));
    

    导致COM异常:800401E3(操作不可用)

    但是,使用 Marshal::GetActiveObject("Word.Application") 工作很好。使用 gcnew rhapsody::RPApplication() 创建一个新实例和C中的同一个代码很好:

    rhapsody.RPApplication App = (rhapsody.RPApplication) Marshal.GetActiveObject("Rhapsody.Application")
    

    工作很好。 有什么想法,为什么它不能工作从C++/CLI?

    1 回复  |  直到 16 年前
        1
  •  2
  •   Reed Copsey    16 年前

    C++/CLI中的主程序()是用 [STAThread] ?它通常是必需的,尤其是在处理COM对象时。

    [STAThread]
    int main(array<System::String^>^args)
    {
         // code here...
    }