ฉันต้องการดึงข้อมูลแพ็คเกจในแอปพลิเคชัน C# ที่ทำงานบน Linux
ฉันได้ลองใช้ Python.NET ซึ่งห่อ หลามฉลาด ซึ่งห่อ libapt-pkg.so
และใช้งานได้ แต่ฉันอยากจะไปโดยตรงมากกว่าโดย pinvoke libapt-pkg
แต่ฉันต้องการความช่วยเหลือเกี่ยวกับคำสั่ง DLIImport ของฉัน
เมื่อใช้ python-apt ฉันจะเริ่มต้นไฟล์ ฉลาด
โมดูล จากนั้นสร้างอินสแตนซ์ของ แคช()
เรียนแล้วโทร แคช คีย์ ()
ฟังก์ชันที่ดึงชื่อแพ็คเกจทั้งหมดเป็นอาร์เรย์สตริง
ถ้าฉันสามารถทำให้มันใช้งานได้โดยใช้ pinvoke ฉันเชื่อว่าฉันมีโอกาสที่ดีที่จะทำให้ส่วนที่เหลือทำงานได้เช่นกัน (ดึงสิ่งที่ขั้นสูงกว่า)
เพียงเพื่อแสดงรหัสบางอย่างที่ใช้งานไม่ได้ แต่เพื่อเริ่มต้น:
[DllImport("libapt-pkg")]
สาธารณะภายนอกคงที่ GetPkgCache แบบไดนามิก (Boolean BuildCaches);
AptCache แบบไดนามิก = GetPkgCache (เท็จ);
ฉันค้นหาในไฟล์ส่วนหัวแล้ว cachefile.h ของโครงการ apt. บางทีบรรทัดเหล่านี้อาจใช้ได้กับคำสั่ง DllImport ของฉัน
..
ตัวดำเนินการแบบอินไลน์ pkgCache &() const {return *Cache;};
ตัวดำเนินการอินไลน์ pkgCache *() const {return Cache;};
..
pkgCache แบบอินไลน์ * GetPkgCache () { BuildCaches (NULL, เท็จ); คืนแคช; };
..
แต่ฉันยังใหม่กับ C/C++ ดังนั้นจึงไม่สมเหตุสมผลสำหรับฉันในปัจจุบัน