Проблема с распаковкой файла .7z в Android evn - PullRequest
1 голос
/ 21 марта 2012

Получение "system.entrypointnotfoundexception: loadlibrary" При попытке использовать SevenZipLib.dll для распаковки файла .7z, содержащего мультимедийное содержимое / файл в Android evn.

Контекст: -TheВся программа написана на C # как проект Android MONO.Нет Build / Deployment Ошибка / предупреждения.Во время работы apk выдается "system.entrypointnotfoundexception: loadlibrary".-Также тестировал тот же код, что и в Windows-проекте (не моно) - распаковка в windows evn.

Допущения для проблемы: 7zip может использовать компоненты COM, а моно-фрейм не работаетsupport.

Вопрос:

Кто-нибудь сталкивался с подобной проблемой?Пожалуйста, предложите несколько альтернативных dll / framework, которые могут быть использованы моим apk для распаковки файла .7z.

1 Ответ

3 голосов
/ 21 марта 2012

Если предположить, что SevenZipLib.dll - это библиотека SevenZipLib в 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.dll (LoadLibrary(), GetProcAddress(), FreeLibrary()), ole32.dll (PropVariantClear()), oleaut32.dll (SafeArrayCreateVector()) и т. Д.

Короче говоря, эта библиотека тесно связана с Windows и не будет работать на какой-либо платформе, отличной от Windows, не без особой работы.

Если вам нужна поддержка 7z в приложении Mono для Android, вам нужно заглянуть в другую библиотеку. Похоже, что 7-zip SDK включает в себя источник C # для чтения файлов LZMA, который не использует P / Invoke, так что, возможно, это сработает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...