Мне нужно получить информацию о пакете в моем приложении C#, работающем в Linux.
я пытался использовать Python.NET которые обертывают python-apt которые обертывают libapt-pkg.so
, и это работает, но я бы предпочел более прямое использование pinvoke libapt-pkg.
Но мне нужна помощь в моем операторе DLLImport.
При использовании python-apt я сначала инициализирую подходящий
модуль, затем создайте экземпляр Кэш()
класс, а затем вызовите Кэш.keys()
функция, которая извлекает все имена пакетов в виде массива строк.
Если я смогу заставить это работать с помощью pinvoke, я считаю, что у меня есть хорошие шансы заставить работать и остальные (получить более продвинутые вещи)
Просто чтобы показать код, который не работает, но просто для начала:
[DllImport("libapt-pkg")]
открытый статический внешний динамический GetPkgCache (логический BuildCaches);
динамический AptCache = GetPkgCache (ложь);
Я искал в заголовочном файле файл кеша.h удачного проекта. Может быть, эти строки можно использовать для моего оператора DllImport?
..
встроенный оператор pkgCache &() const {return *Cache;};
встроенный оператор pkgCache *() const {return Cache;};
..
встроенный pkgCache* GetPkgCache() { BuildCaches(NULL, false); вернуть Кэш; };
..
Но я новичок в C/C++, поэтому в настоящее время для меня это не имеет особого смысла.