Einbetten von python + numpy code in C ++ dll callback

Ich bin neu von PythonEinbettung. Ich versuche, python + numpy Code in eine C ++ Callback-Funktion (innerhalb einer DLL)

Das Problem, das ich mir vorstelle, ist das folgende. wenn ich habe:

Py_Initialize(); // some python glue // python invocation Py_Finalize(); 

Alles funktioniert gut

Aber wenn ich habe:

 Py_Initialize(); _import_array(); //to initialize numpy C-API // some python glue + numpy array object creation // python invocation via PyObject_CallObject() Py_Finalize(); 

Dies stürzt zum zweiten Mal ab, wenn es _import_array () erreicht; (Was bedeutet, dass es für den ersten Rückruf funktioniert)

Wenn ich stattdessen die Python- und Numpy-Initialisierung nur einmal und die Finalisierung im Destruktor mache (also nicht jedes Mal Initialisierung / Finalisierung), stürzt alles beim Verlassen des Rückrufs ab.

Das Problem hier, ich denke, ist numpy, aber ich weiß nicht, wie es zu lösen

One Solution collect form web for “Einbetten von python + numpy code in C ++ dll callback”

Versuchen Sie sicherzustellen, dass Ihre .dll nur einmal initialisiert wird , unabhängig davon, wie oft der Code tatsächlich aufgerufen wird.

Hier ist ein Link auf "C ++ Singleton in einer DLL":

Singleton in einer DLL?

  • Wie bekomme ich ein char * aus einem PyObject, das auf einen String zeigt
  • Ctrl-C erlaubt, eine Python-C-Erweiterung zu unterbrechen
  • PyObject_CallMethod mit Keyword-Argumenten
  • "Kein Modul namens '_ <module>' beim Import eines SWIG-Moduls mit eingebettetem Python
  • Wie kann Python 3 wissen, wie man Erweiterungstypen, insbesondere Numpy Arrays, aufnimmt?
  • Numpy C-Api Beispiel gibt einen SegFault
  • PyArg_ParseTuple SegFaults in CApi
  • Wie passiere ich zu gcc in Python setup.py Skript?
  • Python Callback von SWIG PyObject_Call Segfault
  • C Python: Python-Code in einem Kontext ausführen
  • Wie man richtig mit Python für .NET einbindet
  • Python ist die beste Programmiersprache der Welt.