我当前的目标框架是.NET framework v4.0。
我在导入DLL时遇到问题,因为我得到了";BadImageFormatException";类似于这个后BadImageFormatException加载32位DLL时,目标是x86
从那里我意识到DLL(从NuGet检索(只能在x64中构建,但我的解决方案只能是x86,因为这是团队决定的。所以我不能将配置更改为x64。
我当前正在使用p/Invoke导入它(DllImport(。我的机器是x64。对于上下文,这个DLL是用托管的本机c++代码构建的,我正在尝试将其转换为c#。我不能触摸dll,因为它不是我的库,但我的项目在c#中。
由于不允许我更改项目设置,并且DLL只能在x64中构建和运行,因此有其他方法可以解决此问题吗?
您不能在32位进程中加载64位dll。您的选择是:
- 将应用程序更新到x64模式。这通常需要将所有本机组件更改为x64版本。您说过您的团队决定使用x86,但如果您有充分的理由,可以重新评估这些决定
- 想办法获得x86版本的库。这可能涉及创建您自己的构建,因此可能会非常昂贵
- 在单独的进程中运行库,并使用您喜欢的RPC/IPC方法在进程之间进行通信。这通常会使部署和调试应用程序变得更加困难,具体取决于库的使用频率