我们有一个 Windows 打印机驱动程序需要移植到 ARM
目前构建目标是 x64,驱动程序可以安装在英特尔 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 没有任何与
AnyCPU
构建等效的功能,因此如果您希望 DLL 本地运行,则需要为每个目标 CPU 进行单独构建。模拟器适用于整个进程,而不是单个 DLL。由于您的驱动程序 DLL 已在 ARM 下运行,这意味着使用它的调用进程也必须在 ARM 下运行,因此无法加载 x64 DLL,只能加载 ARM DLL。进程永远不能混合 CPU 架构。
另一方面,由于您的 Delphi DLL 是一个 COM DLL,也许您可以定义一个DLL Surrogate以在单独的进程中运行该 DLL,然后该进程也许可以在模拟器下运行。