我有一個32位的COM服務器DLL,需要從32位和64位應用程序中使用它。我可以創建一個COM +服務器應用程序,然後COM服務器將在代理過程中實例化。一旦我將COM服務器添加到COM +服務器應用程序中,我不能再在-proc中實例化它 - 爲什麼?
問題是我不能再實例化它作爲一個進程內服務器(CLSCTX_INPROC_SERVER
標誌傳遞給CoCreateInstance()
) - 我得到「類未註冊」。這不太好,因爲現在即使是32位應用程序也需要與代理進程交談,這增加了不必要的編組開銷。
如何設置一個COM +服務器應用程序,使得相同位數的客戶端仍然可以使用COM服務器in-proc?
這是一個有點痛苦的事情,我做了一次,但我忘了如何。抱歉!我認爲所有這一切都是創建一個AppID,然後轉到Wow6432Node \ AppID並在那裏添加「DLLSurrogate」空字符串值。儘管你可能需要複製clsid條目。 – Ben 2011-03-15 13:43:00
COM +讓我想起了Zawinski對正則表達式的評論,「現在你有兩個問題」。本的建議很好。 – 2011-03-15 14:01:50