在Win11上,ARM本机dll可以调用x64本机COM dll吗

问题描述 投票:0回答:1

我们有一个Windows打印机驱动程序需要移植到ARM上

目前构建目标为 x64,驱动程序可以安装在 intel Windows 7 - Windows 11 上

驱动程序进行两次 COM 调用 - 一个调用到用 Delphi 编写的 x64 本机 COM dll,另一个调用到用 C# 编写的 dotnet AnyCPU COM dll

我非常有信心本机 ARM 到 AnyCPU dll 的调用将正常工作,而无需我修改 AnyCPU dll 的构建。

我的问题是 - 我是否需要重建 Delphi COM dll,以便它也以 ARM 为目标,或者 ARM Windows 内置的 x64 模拟器会处理它吗?

delphi arm cross-platform
1个回答
0
投票

我是否需要重建 Delphi COM dll,以便它也以 ARM 为目标

Delphi 没有任何相当于

AnyCPU
构建的功能,因此您需要为每个目标 CPU 单独构建。

ARM Windows 内置的 x64 模拟器可以解决这个问题吗?

模拟器适用于整个进程,而不是单个 DLL。 由于您的驱动程序 DLL 已经在 ARM 下运行,这意味着调用进程也必须在 ARM 下运行,因此无法加载 x64 DLL,只能加载 ARM DLL。一个进程永远不能混合 CPU 架构。

另一方面,由于您的 Delphi DLL 是 COM DLL,也许您可以定义一个 DLL Surrogate 将 DLL 移动到单独的进程中,然后也许该进程可以在模拟器下运行。

© www.soinside.com 2019 - 2024. All rights reserved.