当前位置:  开发笔记 > 编程语言 > 正文

从x64 .NET访问x86 COM

如何解决《从x64.NET访问x86COM》经验,为你挑选了2个好方法。

我有一个x64服务器,因为我的库编译为AnyCPU,在x64下运行.我们需要访问在x86下注册的COM组件.我不太了解COM,我的谷歌搜索让我无处可去.

问题:对于COM组件,我可以使用从x64到x86的符号注册表链接吗?我是否还需要在x64下注册COM组件?我可以(这里的任何陈述......)?

谢谢.



1> puetzk..:

如果组件正在运行x64-native,则它无法在进程中加载​​32位COM服务器,因为它是错误的进程.有几种解决方案可能:

    如果可以的话,构建一个64位版本的COM代码(当然可以在64位注册表中注册).这是最干净的解决方案,但如果您没有COM服务器的代码,则可能无法实现.

    将.NET组件作为32位x86而不是x64运行.我假设你已经考虑过并且因为某种原因拒绝了这个.

    使用COM代理 DLLhost.exe 在进程外托管COM组件.这将使调用COM服务器的速度变慢得多(它们现在将是进程间的Windows消息而不是本机函数调用),但在其他方面是透明的(您不必做任何特殊的事情).

    如果服务器需要自定义代理存根而不是使用普通的oleaut32(非常罕见),这可能不是一个选项,因为不会有64位版本的代理可用.只要它可以使用普通的OLE编组,您只需注册它以进行代理激活.



2> lsalamon..:

我找到了这个解决方案,在64位Windows中处理传统的32位组件,请参阅文章:
•将项目类型从进程内转换为进程外
•使用COM +作为主机(这对我有用)
•使用dllhost作为代理主机


镜像链接:http://www.scribd.com/doc/56629579/64-Bit-Insider-Volume-1-Issue-7
推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有