2010-05-28 79 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

回答