Frage

Ich habe eine Klasse in C ++ implementiert. Ich will es mit Python verwenden. Bitte machen Schritt für Schritt-Methode und jeden Schritt erarbeiten. Somthing so ...

class Test{
     private:
        int n;
     public:
        Test(int k){
            n=k;
        }
        void setInt(int k){
            n = k; 
        }
        int getInt(){
            return n;
        }
};

Nun, in Python

>>> T1 = Test(12)
>>> T1.getInt()
12
>>> T1.setInt(32)
>>> T1.getInt()
32

Bitte suggest.How kann ich dies tun? HINWEIS: Ich mag manuelle Art und Weise wissen, dass zu tun. Ich will keine dritte Partei Bibliothek Abhängigkeit.

War es hilfreich?

Lösung

Schauen Sie in Boost.Python . Es ist eine Bibliothek Python-Module mit C ++ zu schreiben.

Schauen Sie auch in SWIG die auch Module für andere Skriptsprachen verarbeiten kann. Ich habe es in der Vergangenheit verwendeten Module für meine Klasse zu schreiben und sie in Python verwenden. Funktioniert prima.

Sie können es manuell tun, indem Sie die Python / C API , schreiben die Schnittstelle selbst . Es ist ziemlich Low-Level, aber Sie werden eine Menge zusätzlicher Kenntnisse über gewinnen, wie Python arbeitet hinter den Kulissen (Und Sie werden es brauchen, wenn Sie SWIG verwenden sowieso).

Andere Tipps

ctypes ist gut. Es ist wirklich einfach zu bedienen, und es wird standardmäßig mit Python. Leider kann es nur auf gemeinsam genutzte Bibliotheken (Unix) oder DLLs (Windows), die eine C-ähnliche Oberfläche haben, sprechen, die bedeutet, dass Sie nicht direkt an ein C ++ Objekt-Schnittstelle kann. Aber Sie könnten ein Griffsystem verwenden, bei denen ein Handgriff auf ein bestimmtes Objekt bezieht.

>>> getInt(h)
12

Ich denke, das ist einfach, leicht zu verstehen und erfordert keine zusätzliche Bibliotheken.

Ich würde vorschlagen, Sie versuchen, SWIG oder sip (KDE / PyQt).

SWIG Link: http://www.swig.org/
SIP-Link: http://freshmeat.net/projects/python-sip/

Diese können verwendet werden C ++ Klassen zu wickeln und eine Pythonic Schnittstelle zu ihnen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top