Trebuie să recuperez informații despre pachet în aplicația mea C# care rulează pe Linux.
Am încercat să folosesc Python.NET care înfășoară python-apt care înfășoară libapt-pkg.so
, și funcționează, dar aș prefera să merg mai direct prin pinvoke libapt-pkg.
Dar am nevoie de ajutor pentru declarația mea DLImport.
Când folosesc python-apt, inițializez mai întâi fișierul apt
modul, apoi instanțiați Cache()
clasă și apoi sunați la Cache.keys()
funcție care preia toate numele pachetelor ca o matrice de șiruri.
Dacă pot face acest lucru să funcționeze folosind pinvoke, cred că am șanse mari să lucrez și restul (preluați lucrurile mai avansate)
Doar pentru a arăta un cod care nu funcționează, ci doar pentru a începe:
[DllImport("libapt-pkg")]
public static extern dinamic GetPkgCache(Boolean BuildCaches);
dynamic AptCache = GetPkgCache(false);
Am căutat în fișierul antet cachefile.h a proiectului apt. Poate că aceste linii pot fi utilizate pentru declarația mea DllImport?
..
operator inline pkgCache &() const {return *Cache;};
operator inline pkgCache *() const {return Cache;};
..
inline pkgCache* GetPkgCache() { BuildCaches(NULL, false); returnează Cache; };
..
Dar sunt nou în C/C++, așa că nu prea are sens pentru mine în prezent.