Gdal: Zeiger / Griff des zugrunde liegenden C-Objekts erhalten
Frage
Ich habe das folgende Setup:
- Gdal-Bibliothek mit Python-Bindungen (SWIG)
- etwas Klebstoffcode (Python)
- A C-Bibliothek, angeschlossen mit Ctypes
Ich möchte den zugrunde liegenden Dataset-Zeiger / Griff des SWIG-Dataset
-Objekts in meine C-Bibliothek bestehen.Wie kann ich diesen Zeiger abrufen?
i tue nicht möchte die C-Bibliothek mit dem SWIG angeben.
Lösung
Es war eigentlich ganz einfach, und ich hoffe, dass meine Lösung tragbar ist.Gegeben, dass meine C-Funktionsdefinition etwas so aussieht:
generasacodicetagpre.Dann ist meine generationstechnische Definition der generationspflege so:
generasacodicetagpre.und ich kann die C-Funktion mit:
anrufen generasacodicetagpre.Andere Tipps
meine reservierung mit dem ctypes-Ansatz für dieses Problem ist, dass die Referenzzählung des DS-Objekts nicht automatisch inkrementiert ist und ein schlechter Zeiger wird, wenn er aus dem Umfang gehen würde.
Ein besserer Ansatz wäre, ein C-Python-Erweiterungsmodul zu definieren, das den Datenreferenzzähler verwalten würde.
Ich verwende ein statisches PyoBect *, um das Objekt zu halten, offensichtlich würde eine echte Implementierung es intelligenter speichern.
generasacodicetagpre.