Score:0

C# wrapper สำหรับห้องสมุด Debian apt libapt-pkg

ธง cn

ฉันต้องการดึงข้อมูลแพ็คเกจในแอปพลิเคชัน 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++ ดังนั้นจึงไม่สมเหตุสมผลสำหรับฉันในปัจจุบัน

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา