Python boost g++

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
cefour
User
Beiträge: 4
Registriert: Dienstag 14. Juli 2009, 23:08

Hallo Leute ich hätte an euch die Frage ob einer weiss wie man mittels
Boost eine Python Extension schreibt und diese auch anschliessend in Python benutzen kann. Das alles soll unter Linux mittels dem GCC laufen

Also ich habe folgendes einfache Beispiel in C++
C/C++ Code:
void PrintMsg(char * msg)
{
printf("PYTHON: %s\n",msg);
}

BOOST_PYTHON_MODULE(Pointless)
{
def("PrintMsg",PrintMsg);
}

und kompelliere wie folgt
Code:
CMD = -shared

all: main.so

main.o: main.cpp
g++ -c main.cpp -I/usr/include/python2.6/

main.so: main.o
g++ -o main.so main.o -lpython2.6 $(CMD)
Code:
CMD = -shared

und mein kleines PYTHON SCRIPT SIEHT WIE FOLGT AUS
C/C++ Code:
import ctypes

ctypes.CDLL("~/pythonBoost/main.so")
C/C++ Code:
import ctypes

ctypes.CDLL("~/pythonBoost/main.so")
C/C++ Code:
import ctypes

ctypes.CDLL("~/pythonBoost/main.so")

leder führt allein diese Anweisung dazu das er ein Symbol nicht kennt
Python als eigebette Scriptsprache funktionier soweit.

Vielleicht mache ich irgendetwas total falsch

Kann jemand helfen
Mit freundlichen Grüßen
cefour
BlackJack

@cefour: Was hat denn `ctypes` da zu suchen!? Mit Boost::python sollte eine Bibliothek entstehen, die man *direkt* in Python importieren kann.

Wenn die Dokumentation von Boost an der Stelle nicht ausreichend sein sollte, such Dir doch einfach mal ein kleines Projekt, bei dem Du Dir anschauen kannst, wie es da gemacht wird.

Die Art wie Du Dein Vorgehen hier präsentierst, ist übrigens etwas verwirrend. Ich weiss jedenfalls nicht so genau was Du da gemacht hast.
cefour
User
Beiträge: 4
Registriert: Dienstag 14. Juli 2009, 23:08

Kennst du denn ein Projekt?
cefour
User
Beiträge: 4
Registriert: Dienstag 14. Juli 2009, 23:08

Erstmal danke hast mich auf ne Idee gebracht habe es gelöst sowohl mit ctypes wie auch ohne.

Es war ganz einfach es fehlte die Boost-lib für Python dankeschön

Mit freundlichen Grüßen
Cefour
Antworten