Проблемы с ObjCRuntime.Dlfcn.dlopen - PullRequest
       50

Проблемы с ObjCRuntime.Dlfcn.dlopen

1 голос
/ 01 октября 2019

есть проблема с возвращаемым результатом из Dlfcn.dlopen (...).

Включен библиотечный файл *. Framework в проекте Xamarin.iOS пометил его как встроенную библиотеку. Кроме того, файл библиотеки включен в *. App / *. Framework - он расположен там физически и на устройстве iOS.

В кодеЯ проверяю, что файл библиотеки находится на пути, и я получаю значение размера файла библиотеки. Библиотека Файл существует и имеет полный размер в байтах . Но установите путь к библиотеке в dlopen, Я не получаю возвращаемый результат, и при этом я не получаю никаких ошибок .

//Code Example Issue ObjCRuntime.Dlfcn.dlopen

var derictories = System.IO.Directory.EnumerateDirectories("./");
foreach (var item in derictories)
{
    Console.WriteLine(item);
}

//Dynamic Library Name
var ln = @"av337.framework/av337";
var documentsPath = NSBundle.MainBundle.ResourcePath;
var filePath = System.IO.Path.Combine(documentsPath, ln);

bool isExist = System.IO.File.Exists(filePath);
Console.WriteLine("Framework Exist: "+isExist);
var data = System.IO.File.ReadAllBytes(filePath);
if(data.Length>0)
    Console.WriteLine("Framework size: "+data.Length);

IntPtr result = ObjCRuntime.Dlfcn.dlopen(filePath, 0);
Console.WriteLine("dlopen Error: "+ObjCRuntime.Dlfcn.dlerror());

if (result != IntPtr.Zero)
    ObjCRuntime.Dlfcn.dlclose(result);
else
    throw new Exception("ObjCRuntime.Dlfcn.dlopen not load");

enter image description here

Что я делаю не так и как мне использовать dlopen для * .framework * .so и других динамических библиотек?

...