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
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

Python dan arıyorum C/C?...
Nasıl hat ucuza Python kadar sayalım m...
Nasıl Python ile bir GUID oluşturmak i...
Çıkış arasındaki fark() ve sys.() çıkı...
Nasıl python harita ve diğer işlevsel ...