【问题标题】:access 64bit dll from 32bit process using C++使用 C++ 从 32 位进程访问 64 位 dll
【发布时间】:2014-07-18 13:29:20
【问题描述】:

我确实发布了它不可能在同一进程中将 64 位 dll 加载到 32 位 dll 中。 但是我可以将我的 64 位 dll 放入 com 并从我的 32 位应用程序访问该 com。 任何人都可以为我提供这样做的样本吗?有没有其他方法可以解决这个问题?

注意:我无法将 64 位 dll 构建为 32 位作为其外部 3rd 方 dll,我无法将我的 32 位进程转换为 64 位,因为它是一个非常庞大的应用程序。将其转换为 64 位需要我很多年。

任何帮助将不胜感激

【问题讨论】:

  • 您可以使用 COM exe 服务器或任何其他方式的进程间通信(套接字、管道、全局事件、共享内存、Windows 消息传递等)。决定哪种方式更适合您。
  • 在哪里可以找到使用 COM exe 服务器的示例?
  • 搜索“进程外”COM 服务器。您也可以使用 DCOM。我听说可以使用dllhost.exe(Windows 附带)将进程内 COM 服务器转换为 DCOM 服务器,尽管我对细节不满意
  • COM 服务器是否包含类型库或附带类型库?
  • @MattMcNabb 你没听错;它称为DLL Surrogate,如果您的组件符合要求(不需要太多),您可以这样做。我以相反的方式完成了它(64 位进程访问了一个 32 位代理托管的 in-proc-COM-lib)并且可以证明它可以完成。

标签: c++ com ipc 32bit-64bit


【解决方案1】:

您可以利用有关从 32 位进程访问 64 位的进程通信。
下面是一些步骤。

  1. 做一个COM服务器,example,可以修改工程属性生成64位程序。

  2. 定义并实现cominterface,在COM服务器中,加载64位dll,以及封装dll函数。

  3. 32bit App调用COM服务器接口(CLSCTX_ACTIVATE_64_BIT_SERVER),通过参数发送数据并获取结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 2017-02-18
    • 2013-06-08
    • 2011-04-16
    • 1970-01-01
    • 2011-08-12
    • 2022-01-20
    相关资源
    最近更新 更多