我有一个以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。
如何让它发挥作用?
答案 0 :(得分:0)
这是预期的行为 - 您无法将32位dll加载到64位客户端进程中,操作系统不支持此操作。您必须重新编译服务器(并注册其64位版本)或使用DCOM,COM +或其他互操作解决方案,这些解决方案将在单独的进程中运行32位代码并将来自客户端的调用封送到该进程中使用RPC。