使用64位C#应用程序中的32位CabExtract库提取cab文件

本文关键字:CabExtract 提取 cab 文件 32位 64位 应用程序 使用 | 更新日期: 2023-09-27 18:00:03

最近,我正在64 bit C# application中使用CabExtract(用C编写)提取cab文件。该库在32位应用程序中运行时运行良好,但当64位应用程序使用相同的库时,它会抛出以下异常:

从cabExtract.dll导入已通过以下方式实现:

[DllImport("cabExtract.dll", EntryPoint="ExtractCabBegin", CharSet=CharSet.Unicode, ExactSpelling=true)]
internal static extern int ExtractCabBegin();

异常:系统。BadImageFormatException

消息:试图加载格式不正确的程序。(来自的异常HRESULT:0x8007000B)

我怀疑CabExtract库支持32位。但我还没有找到任何64位的CabExtract库。所以,我的问题是:

它能使用64位托管应用程序中的32位非托管库吗?如果是,如何做到这一点?

使用64位C#应用程序中的32位CabExtract库提取cab文件

它能使用64位托管应用程序中的32位非托管库吗?如果是,如何做到这一点?

不,这是不可能的。64位进程只能加载64位模块。32位进程只能加载32位模块。

您链接到的库作为源代码提供,并包含在LGPL许可证中。只要你遵守该许可证,你就可以将代码编译成64位DLL,并从64位进程中使用它。