Python dan arıyorum C/C? | Netgez.com
SORU
28 EYLÜL 2008, Pazar


Python dan arıyorum C/C?

Bir python C veya C kütüphanesi için bağlayıcı oluşturmak için en hızlı yolu nedir?

(eÄŸer bu konularda eÄŸer windows kullanarak)

CEVAP
28 EYLÜL 2008, Pazar


ctypes çok swig hep bana problems vermek eğiliminde seviyorum. Ayrıca ctypes python hiçbir zaman bağımlılık derleme tatmin gerek yok avantajı vardır, ve bağlama ctypes, sadece karşı derlendiği sahip olan herhangi bir python üzerinde çalışacak.

Foo.cpp adı: dosyadaki konuşmak istediğiniz basit C örnek bir sınıf olduğunu varsayalım

#include <iostream>

class Foo{
    public:
        void bar(){
            std::cout << "Hello" << std::endl;
        }
};

Ctypes sadece C fonksiyonları konuşabilir beri, o asistan olarak ilan vermeniz gerekir "C"

extern "C" {
    Foo* Foo_new(){ return new Foo(); }
    void Foo_bar(Foo* foo){ foo->bar(); }
}

Önümüzdeki paylaşılan kitaplık için bu derlemeye

g   -c -fPIC foo.cpp -o foo.o
g   -shared -Wl,-soname,libfoo.so -o libfoo.so  foo.o

Ve son olarak python sarıcı (foowrapper.py örn yazmak zorunda

from ctypes import cdll
lib = cdll.LoadLibrary('./libfoo.so')

class Foo(object):
    def __init__(self):
        self.obj = lib.Foo_new()

    def bar(self):
        lib.Foo_bar(self.obj)

Bir kez böyle bir çağrı var

f = Foo()
f.bar() #and you will see "Hello" on the screen

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Electro Posé

    Electro PosÃ

    21 ÅžUBAT 2013
  • Kenneth HÃ¥konsen

    Kenneth HÃ¥k

    13 Mart 2011
  • VvCompHelpvV

    VvCompHelpvV

    4 EYLÜL 2007