如何在x64中使用CoGetClassObject函数

时间:2010-04-28 07:49:49

标签: com interop 64-bit 32bit-64bit

我有一个以32位模式(服务器端)编译的COM DLL。我注册了它并尝试从32位客户端调用CoGetClassObject()以获取IClassFactory

Hr = CoGetClassObject(CLSID_IOrbCom, CLSCTX_INPROC_SERVER,
   0 , IDD_IClassFactory, (LPVOID*)&ClassFactory)

它适用于32位客户端。然而,当我尝试从64位客户端调用CoGetClassObject()时,我收到了“Class not registered”错误。

我只能在32位模式下编译COM服务器。我的操作系统是64位Windows XP。

如何让它发挥作用?

1 个答案:

答案 0 :(得分:0)

这是预期的行为 - 您无法将32位dll加载到64位客户端进程中,操作系统不支持此操作。您必须重新编译服务器(并注册其64位版本)或使用DCOM,COM +或其他互操作解决方案,这些解决方案将在单独的进程中运行32位代码并将来自客户端的调用封送到该进程中使用RPC。