【发布时间】:2014-04-24 08:13:04
【问题描述】:
最近,我正在用CabExtract(用C 编写)在64 bit C# application 中提取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 位包吗? cygwin.com/packages/x86_64/cabextract
-
谢谢 rene...我已经完成了,但我无法获得该来源?没有下载选项来获取源代码。
-
嗯,如果您从主页获取源并自己编译?
-
@downvoter : 请在投票前发表评论...
-
投票是匿名的……你必须忍受这一点。尽管您的问题还不错,但您的最后一个子弹要求提供场外资源,这使您的问题成为一个接近的候选人。如果您添加了您尝试下载源代码并将其编译为 x64 的内容,您可能会撤销该反对意见...
标签: c# dll pinvoke dllimport cab