Pergunta

Eu implementei uma classe em C ++. Quero usá-lo com Python. Por favor, sugerem método passo a passo e elaborar cada passo. Somthing como este ...

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

Agora, em Python

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

Por favor suggest.How posso fazer isso? NOTA: Eu gostaria de saber forma manual para fazer isso. Eu não quero qualquer terceira dependência biblioteca partido.

Foi útil?

Solução

Boost.Python . É uma biblioteca de módulos de gravação python com C ++.

Também olhar para SWIG que também pode lidar com módulos para outras linguagens de script. Eu usei-o no passado para escrever módulos para minha classe e usá-los dentro de python. Funciona muito bem.

Você pode fazê-lo manualmente usando a Python / C API , escrevendo o mesmo interface de . É muito baixo nível, mas você vai ganhar um monte de conhecimento adicional de como Python funciona por trás da cena (E você vai precisar dele quando você usar SWIG de qualquer maneira).

Outras dicas

ctypes é bom. É realmente fácil de usar, e ele vem com Python. Infelizmente ele só pode falar com bibliotecas compartilhadas (UNIX) ou DLLs (Windows) que têm uma interface de estilo C, o que significa que você não pode interagir diretamente a um objeto C ++. Mas você poderia usar um identificador de sistema onde um identificador se refere a um objeto particular.

>>> getInt(h)
12

Eu acho que é simples, fácil de entender, e não requer bibliotecas adicionais.

Eu sugiro que você tente SWIG ou saborear (KDE / PyQt).

SWIG link: http://www.swig.org/
ligação SIP: http://freshmeat.net/projects/python-sip/

Estes podem ser usados ??para embrulhar classes C ++ e fornecer uma interface Pythonic para eles.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top