2010-05-28 75 views
2

我們有使用多個COM對象的C++應用程序。 COM對象是基於.NET的(使用COM Interop)。將.NET COM對象遷移到64位

我需要將應用程序遷移到64位。我特別需要C++應用程序爲64位。我不想將所有.NET com對象重新編譯爲64位並提供兩組DLL(32位和64位)。

我正在調查,發現我可以使用(註冊表中的DllSurrogate)在32位代理過程中加載32位COM Dll。我知道如何做到這一點,但這意味着所有的COM對象都會變得不合時宜。

在C++我的代碼: CoCreateInstance的(CLSID_SomeClass,NULL,CLSCTX_INPROC_SERVER,IID_SomeInterface,(無效**)& pobj);

它工作正常,但只要我切換到CLSCTX_LOCAL_SERVER(併爲DllSurrogate添加註冊表項),它無法找到接口(錯誤0x80004002)。我檢查了註冊表,發現當.NET COM DLL註冊時,它添加了ClsID註冊表項,但不添加Interface和TypeLib註冊表項。

問題是,如何爲.NET COM創建這些註冊表項?

問候, 維克多

+0

您試圖只支持x64位操作,究竟是什麼原因? – 2011-06-20 13:19:36

回答