从32位应用程序调用64位COM控件

时间:2010-09-24 17:34:14

标签: c++ com 64-bit

我们的产品之一是32位应用程序,但需要通过64位COM控制(包装64位设备驱动程序)与仪器进行通信。由于各种原因,我们不希望将此应用程序编译为64位应用程序,但我们确实希望在64位操作系统上运行它。由于驱动程序和COM控件必须是64位才能工作,我们从32位端访问它们有哪些选择?

有人能指出我正确的方向吗?

由于

柯蒂斯

2 个答案:

答案 0 :(得分:6)

只要COM接口仅使用可由COM子系统自动封送的类型(例如:自动化兼容),就可以直接工作。

您需要确保其他COM对象在其自己的进程空间中运行;如果不是这样设计的话,将它放在[服务器类型] COM +应用程序中就足够了。

如果接口参数无法自动编组,或者COM对象因任何原因无法运行进程外,则需要一个符合这些要求的插页式模块(可以是另一个COM对象)。但是,使这个场景比简单的DLL更容易,所以你在游戏中领先。

答案 1 :(得分:1)

我认为没有一个简单的解决方案。 32位应用程序无法调用64位DLL(反之亦然)。经常提到的一个解决方案是使用某种IPC(进程间通信)代表应用程序调用DLL。它将是一种IPC thunking层。

在您的情况下,您需要一个“小”64位应用程序来实际调用64位COM控件对象并将结果传回给32位应用程序。这可能不是一个简单的解决方案。