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

  • FILIPeeeK

    FILIPeeeK

    22 Mayıs 2006
  • THELIFEOFPRICE

    THELIFEOFPRI

    16 Mart 2011
  • thelonelyisland

    thelonelyisl

    23 Aralık 2005