同一C#应用中是否可同时编译调用x86和x64两类第三方DLL?
不同架构第三方硬件驱动DLL在C#项目中共存问题
- 正在开发适配FTDI设备的程序,对应DLL需要将目标平台设置为x64才能正常运行,否则会抛出
BadImageFormat异常。 - 同一程序还需要和Feasa设备通信,该设备的DLL仅在目标平台设为x86时可避免抛出同类型异常。
- 已经为两类设备都编写了
DllImport/封送处理逻辑,目前单独选中对应x64/x86平台设置时单类设备功能运行正常,但调用另一类设备的函数时,对应DLL就会抛出BadImageFormat异常。 - 暂未获悉两家厂商有更新适配多架构的DLL,二者仅提供C库(FTDI有一个C#封装包,但缺失所需的核心功能),都需要进行封送处理。拥有较多C开发经验,但所在公司主要技术栈为C#,哪怕改用C开发应用也只是暂缓问题,且不确定C是否能解决该架构不兼容问题。
是否有方案可以让两类不同架构的DLL在同一个应用中同时正常运行?目前发现第三方DLL仅支持特定架构,担心之前投入的大量开发工作会白费。
问题后续解决说明
后续发现Feasa实际提供x86和x64两个版本的DLL,替换对应版本的DLL后问题已解决。
内容的提问来源于stack exchange,提问作者Plaje
相关产品推荐
相关产品推荐

