有没有办法让 P/Invoke (DllImport) 签名引用的特定 DLL 取决于 CPU 架构?
我正在开发一个应用程序,该应用程序从第三方供应商的本机 dll 加载大量方法签名,在本例中是用户空间接口 DLL 到一个硬件。该供应商现在已经开始提供 DLL 的 x86 和 x64 版本,我认为我的应用程序将受益于作为 64 位进程运行。除了这个 DLL,一切都是 .NET 代码,因此构建为“任何 CPU”都可以。
本机 DLL 中的所有方法签名在 64 位上都是相同的,但是 DLL 的名称不同(Foo.dll 与 Foo_x64.dll)。有没有办法通过 P/Invoke 签名或 app.config 条目,我可以让它根据正在运行的 CPU 架构选择要加载的 DLL?
如果不是不同的 DLL 名称而是不同文件夹中的相同名称,那会打开任何其他选项吗?
注意:因为此用户空间 DLL 的版本必须与已安装的硬件内核驱动程序相匹配,所以 DLL 不与我们的应用程序捆绑在一起,而是依赖供应商安装程序将其放置在 %小路%。