C#如何使用使用不同CPU体系结构的库?

C#如何使用使用不同CPU体系结构的库?,c#,cpu,libraries,C#,Cpu,Libraries,我目前正在使用C#开发一个独立的应用程序,我面临一个无法找到解决方案的问题。事实上,我的脚本使用了两个库(由外部公司提供),但是,一个库是为64位系统制作的,另一个库是为32位系统制作的。所以我的问题是,当我试图同时使用这两个库时,总是会出现一个错误: System.BadImageFormatException 我已经尝试为“任意CPU”、“x64”和“x86”构建我的项目,但我总是遇到同样的问题 因此,我想知道是否有可能解决这个问题,以便能够在同一脚本中使用这两个库,或者是否有其他技术可以

我目前正在使用C#开发一个独立的应用程序,我面临一个无法找到解决方案的问题。事实上,我的脚本使用了两个库(由外部公司提供),但是,一个库是为64位系统制作的,另一个库是为32位系统制作的。所以我的问题是,当我试图同时使用这两个库时,总是会出现一个错误:

System.BadImageFormatException
我已经尝试为“任意CPU”、“x64”和“x86”构建我的项目,但我总是遇到同样的问题

因此,我想知道是否有可能解决这个问题,以便能够在同一脚本中使用这两个库,或者是否有其他技术可以实现相同的结果

提前谢谢大家,, Clément

如果库使用第三方标准windows DLL,这将非常困难

但是,只需反编译库,并在您选择的位中重建它


注1:注意这可能违反许可协议


注意2:某些反编译器可能会有点不成功

您必须为这两个编译器启动不同的进程,并将各自的程序集加载到其中,然后确定两者之间的通信。无法将32位和64位程序集加载到同一进程中。另一种方法是联系供应商,看看是否有办法让他们提供所有这些程序集的32位或64位版本,这样你就不必跳转来加载它们。不幸的是,提供这些库的公司最近关闭了。。。如果我开始处理A脚本(64位)中的第一个库,然后使用B脚本(86位),结果可能是决定性的?可能的话,尝试通过TCP实现客户端服务器的DLL-as-A-service方法。服务器为您的库运行32位包装器,您可以询问他有关操作的信息。手动、gRPC、SignalR、WCF等。可能重复:如果您无法访问源代码并必须反编译,则很可能违反了许可协议。@TsahiAsher鉴于OP称供应商公司最近关闭了,这有关系吗?@NetMage IANAL,但关闭的公司并不意味着其版权全部无效。例如,它可能为了还债而出售专利。@TsahiAsher是真的,但你说的是许可协议。我想这取决于它是否停业或被购买或出售,以及协议在这些情况下的内容。但如果它停业了,谁会执行这些条款?@NetMage Fair point。不过,这很可能是侵犯版权。