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?

  • Aufruf einer Python-Methode aus C / C ++ und Extrahieren des Rückgabewerts
  • Definiere eine globale in einem Python-Modul aus einer C-API
  • Große POST-Daten sind bei der Verwendung von Django / PyISAPIe / IIS beschädigt
  • Fehler: Wert des Typs 'PyObject' (aka '_object') ist nicht kontextuell konvertierbar zu 'bool'
  • Stoppen von Embedded Python
  • NumPy C-API: konvertiert Typobjekt zur Typnummer
  • Python-Instanzmethode in C
  • Übergeben einer C-Struktur an eine Python-Funktion
  • Python C-API-Funktionen, die Referenzen ausleihen und stehlen
  • Pythonobjekte als Argumente an C / C ++ - Funktion über Ctypes übergeben
  • "Kein Modul namens '_ <module>' beim Import eines SWIG-Moduls mit eingebettetem Python
  • Python ist die beste Programmiersprache der Welt.