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

在64位C#应用程序中使用32位CabExtract库提取cab文件,c#,dll,pinvoke,dllimport,cab,C#,Dll,Pinvoke,Dllimport,Cab,最近,我正在64位C#application中使用(用C编写)提取cab文件。该库在32位应用程序中运行时工作正常,但在64位应用程序中使用相同的库时,会引发以下异常: 通过以下方式实现了从cabExtract.dll导入: [DllImport("cabExtract.dll", EntryPoint="ExtractCabBegin", CharSet=CharSet.Unicode, ExactSpelling=true)] internal static extern int Extra

最近,我正在
64位C#application
中使用(用C编写)提取cab文件。该库在32位应用程序中运行时工作正常,但在64位应用程序中使用相同的库时,会引发以下异常:

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

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

消息:试图>加载格式不正确的程序。(不适用于 HRESULT:0x8007000B)

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

它能否从64位托管应用程序使用32位非托管库?如果是,怎么做

它能否从64位托管应用程序使用32位非托管库?如果是,怎么做

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


您链接到的库作为源代码提供,并且受LGPL许可证的保护。只要您遵守该许可证,您就可以将代码编译成64位DLL,并从64位进程使用该DLL。

在这种情况下,您不应该使用64位软件包吗?谢谢雷内…我已经经历过了,但我不知道如何获得该来源?没有下载选项可以获取source.Hmmm,如果你从主页获取源代码并自己编译?@downvoter:请在downvote之前留下评论…投票是匿名的…你必须接受它。虽然你的问题并不糟糕,但你的最后一个问题要求提供一个非现场资源,使你的问题成为一个接近的候选人。如果您添加了您试图下载源代码并为x64编译的内容,那么您可能会反转向下投票。。。