Meh*_*ANI 5 .net c# com .net-assembly
简短的问题:是否可能(当然是在x64操作系统上)?如果不是,为什么呢?
我为excel 32开发了ac#plugin dll.
在x86中编译时,它工作正常.
在x64中编译时,COM调用失败.
我需要64位版本的Excel吗?
我认为COM不可能编译体系结构,并且可以在不同技术和不同体系结构中开发的dll之间进行通信,但我猜后者是错误的.
我猜一个x64位dll显然不能通过COM(或其他)从32位应用程序调用.
COM支持两种服务器,进程内和进程外.Office扩展是进程内组件,是一个加载到进程中的DLL.32位进程的一个硬性规则是它们无法加载64位DLL.反过来说.这是由注册表本身强制执行的,32位进程无法直接访问64位COM服务器的注册信息.它们被重定向到HKLM/Software/Wow6432Node键.换句话说,他们甚至看不到错误位的组成部分.
进程外组件没有这种限制,它们在自己的进程中运行.COM使用RPC和论文对比特差异进行编组.这也是使进程内64位服务器与32位主机一起工作的一种方法,您可以在代理进程中运行该组件.这很难开始,几乎从不值得麻烦,由于需要编组和上下文切换,进程外调用比进程内调用要昂贵得多.它不仅要贵一点,它的速度也要慢一倍,主要是因为进程内函数调用速度非常快.它只用于保持传统的32位服务器使用64位程序.看看COM +托管,如果你想尝试这个,我不太了解它.
| 归档时间: |
|
| 查看次数: |
405 次 |
| 最近记录: |