我有一个 x64 服务器,因为我的库被编译为 AnyCPU,所以它在 x64 下运行。我们需要访问在 x86 下注册的 COM 组件。我对 COM 的了解还不够,我的谷歌搜索也没有任何结果。
问题:对于 COM 组件,我可以使用从 x64 回到 x86 的符号注册表链接吗?我还需要在 x64 下注册 COM 组件吗?我可以(这里有任何声明...)吗?
Thanks.
如果组件运行的是 x64-native,则它无法在进程中加载 32 位 COM 服务器,因为它是错误的进程类型。有几种可能的解决方案:
如果可以的话,构建一个 64 位版本的 COM 代码(当然,它会在 64 位注册表中注册自身)。这是最干净的解决方案,但如果您没有 COM 服务器的代码,则可能无法实现。
将 .NET 组件作为 32 位 x86 而不是 x64 运行。我想你已经考虑过并出于某种原因拒绝了这一点。
-
使用以下命令在进程外托管 COM 组件COM代理DLL主机.exe。这将使对 COM 服务器的调用变得非常非常慢(它们现在将是进程间 Windows 消息而不是本机函数调用),但在其他方面是透明的(您不必执行任何特殊操作)。
如果服务器需要自定义代理存根而不是使用普通的 oleaut32 代理存根(尽管非常罕见),那么这可能不是一种选择,因为不会有 64 位版本的代理可用。只要能使用普通的OLE编组,就可以注册它以进行代理激活.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)