2010-04-28 100 views
2

我有一個以32位模式編譯的COM DLL(服務器端)。我註冊了它,並嘗試從32位客戶端撥打CoGetClassObject()獲取IClassFactory如何在x64中使用函數CoGetClassObject

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

對於32位客戶端它工作得很好。但是當我試圖從64位客戶端調用CoGetClassObject()時,我得到「Class not registered」錯誤。

我只能有我的COM服務器編譯爲32位模式。我的操作系統是64位Windows XP。

如何讓它工作?

回答

0

這是預期的行爲 - 您無法將32位dll加載到64位客戶端進程中,這只是不受操作系統支持。您必須重新編譯服務器(並註冊它的64位版本),或者使用DCOM,COM +或其他互操作解決方案,以便在單獨的進程中運行32位代碼,並將來自客戶端的調用編入該進程使用RPC。