在Android evn中解压缩.7z文件的问题

时间:2012-03-21 13:08:16

标签: android xamarin.android unzip 7zip compression

获取“system.entrypointnotfoundexception:loadlibrary”尝试使用SevenZipLib.dll解压缩包含Android evn中的媒体内容/文件的.7z文件。

上下文 - 整个程序用c#编写,作为MONO Android项目。没有构建/部署错误/警告。 在运行apk时,它抛出“system.entrypointnotfoundexception:loadlibrary”。 - 还测试了与windows项目相同的代码(不是单声道) - 在windows evn中解压缩。

问题的假设: 7zip内部可能正在使用COM组件&单声道框架工作不支持。

问题:

有没有人遇到类似的问题?请建议一些替代的DLL /框架,我的apk可以用来解压缩.7z文件。

1 个答案:

答案 0 :(得分:3)

假设SevenZipLib.dllSevenZipLib Library on CodePlex,问题是SevenZipLib\SevelZipLib\SevenZipArchive.cs

[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern SafeLibraryHandle LoadLibrary(
  [MarshalAs(UnmanagedType.LPTStr)] string lpFileName);

该项目包含许多P / Invokes到kernel32.dllLoadLibrary()GetProcAddress()FreeLibrary()),ole32.dllPropVariantClear()),{ {1}}(oleaut32.dll)等等。

简而言之,这个库与Windows密切相关,并且不会以任何有意义的方式在非Windows平台上运行,并非没有大量工作。

如果您在Mono for Android应用程序中需要7z支持,则需要查看其他库。看起来7-zip SDK包含了用于读取不依赖于P / Invoke的LZMA文件的C#源代码,所以也许这样可行?