c++ Klassen richtig einbinden
Verfasst: Sonntag 24. März 2013, 18:17
Hi,
das Thema kommt ja so oder ähnlich hier schon häufiger vor. Aber ich habe immer noch Probleme, eine dll richtig einzubinden.
Ich möchte (in Blender) mit ctypes ein C++ Code in Python einbinden, um bestimmte Berechnungen zu beschleunigen. Von C++ habe ich allerdings noch keinen blassen Schimmer, versuche mir das aber auf diesem Weg zu erarbeiten.
Ich nutze Win7, Visual Studio Express und Python 3.2 - alle in, auf oder für 64bit
Zum Erstellen der dll habe ich das Tutorial von MS genommen: http://msdn.microsoft.com/de-de/library ... 80%29.aspx
Wenn ich das richtig verstanden habe, müsste ich die Funktionen der dll in Python so einbinden können:
Das funktioniert aber nicht. Ich bekomme die Meldung "AttributeError: function 'Add' not found"
Irgendwo habe ich dann mit Googles Hilfe die folgende Zeile gefunden:
Jetzt kann ich zwar auf die Funktion mit "testlib.MyFuncAdd(2,4)" zugreifen, aber der zurückgegebene Wert ist immer derselbe. Gleich, welche Werte ich mitgebe.
Mit dem "DLL Export Viewer" habe ich mir die Namen meiner Funktionen ausgeben lassen. Im Falle der originalen Add Funktion sieht die dann so aus:
public: static double __cdecl MathFuncs::MyMathFuncs::Add(double,double)
Da weiss ich nicht, wie ich das ansprechen soll.
#pragma ... erzeugt mir immerhin den Eintrag "MyFuncAdd", der ja dann auch funktioniert, allerdings nicht 6 zurückgibt, sondern 2225864.
Kann mir da jemand weiterhelfen? Alles googeln bringt grad nichts mehr.
Vielen Dank,
ponc
das Thema kommt ja so oder ähnlich hier schon häufiger vor. Aber ich habe immer noch Probleme, eine dll richtig einzubinden.
Ich möchte (in Blender) mit ctypes ein C++ Code in Python einbinden, um bestimmte Berechnungen zu beschleunigen. Von C++ habe ich allerdings noch keinen blassen Schimmer, versuche mir das aber auf diesem Weg zu erarbeiten.
Ich nutze Win7, Visual Studio Express und Python 3.2 - alle in, auf oder für 64bit
Zum Erstellen der dll habe ich das Tutorial von MS genommen: http://msdn.microsoft.com/de-de/library ... 80%29.aspx
Wenn ich das richtig verstanden habe, müsste ich die Funktionen der dll in Python so einbinden können:
Code: Alles auswählen
import ctypes
path = "C:/Users/.../Release/probe4"
testlib = ctypes.CDLL(path)
x = testlib.Add(2,4)
print(x)
Irgendwo habe ich dann mit Googles Hilfe die folgende Zeile gefunden:
Code: Alles auswählen
#pragma comment(linker, "/EXPORT:MyFuncAdd=?Add@MyMathFuncs@MathFuncs@@SANNN@Z")
Mit dem "DLL Export Viewer" habe ich mir die Namen meiner Funktionen ausgeben lassen. Im Falle der originalen Add Funktion sieht die dann so aus:
public: static double __cdecl MathFuncs::MyMathFuncs::Add(double,double)
Da weiss ich nicht, wie ich das ansprechen soll.
#pragma ... erzeugt mir immerhin den Eintrag "MyFuncAdd", der ja dann auch funktioniert, allerdings nicht 6 zurückgibt, sondern 2225864.
Kann mir da jemand weiterhelfen? Alles googeln bringt grad nichts mehr.
Vielen Dank,
ponc