pue*_*tzk 29
如果组件正在运行x64-native,则它无法在进程中加载32位COM服务器,因为它是错误的进程.有几种解决方案可能:
如果可以的话,构建一个64位版本的COM代码(当然可以在64位注册表中注册).这是最干净的解决方案,但如果您没有COM服务器的代码,则可能无法实现.
将.NET组件作为32位x86而不是x64运行.我假设你已经考虑过并且因为某种原因拒绝了这个.
使用COM代理 DLLhost.exe 在进程外托管COM组件.这将使调用COM服务器的速度变慢得多(它们现在将是进程间的Windows消息而不是本机函数调用),但在其他方面是透明的(您不必做任何特殊的事情).
如果服务器需要自定义代理存根而不是使用普通的oleaut32(非常罕见),这可能不是一个选项,因为不会有64位版本的代理可用.只要它可以使用普通的OLE编组,您只需注册它以进行代理激活.
我找到了这个解决方案,在64位Windows中处理传统的32位组件,请参阅文章:
•将项目类型从进程内转换为进程外
•使用COM +作为主机(这对我有用)
•使用dllhost作为代理主机
| 归档时间: |
|
| 查看次数: |
19667 次 |
| 最近记录: |