我们的产品之一是32位应用程序,但需要通过64位COM控制(包装64位设备驱动程序)与仪器进行通信。由于各种原因,我们不希望将此应用程序编译为64位应用程序,但我们确实希望在64位操作系统上运行它。由于驱动程序和COM控件必须是64位才能工作,我们从32位端访问它们有哪些选择?
有人能指出我正确的方向吗?
由于
柯蒂斯
答案 0 :(得分:6)
只要COM接口仅使用可由COM子系统自动封送的类型(例如:自动化兼容),就可以直接工作。
您需要确保其他COM对象在其自己的进程空间中运行;如果不是这样设计的话,将它放在[服务器类型] COM +应用程序中就足够了。
如果接口参数无法自动编组,或者COM对象因任何原因无法运行进程外,则需要一个符合这些要求的插页式模块(可以是另一个COM对象)。但是,使这个场景比简单的DLL更容易,所以你在游戏中领先。
答案 1 :(得分:1)
我认为没有一个简单的解决方案。 32位应用程序无法调用64位DLL(反之亦然)。经常提到的一个解决方案是使用某种IPC(进程间通信)代表应用程序调用DLL。它将是一种IPC thunking层。
在您的情况下,您需要一个“小”64位应用程序来实际调用64位COM控件对象并将结果传回给32位应用程序。这可能不是一个简单的解决方案。