我有一个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