Konfiguration
Die Qiskit-C-API erfordert nur minimale Konfiguration.
QISKIT_PYTHON_EXTENSION
Wenn sie vor dem Einbinden qiskit.hdefiniert werden, definieren die Header-Dateien alle Symbole in einer Weise, die für die Verwendung mit Erweiterungsmodulen von „ Python “ sicher ist. Das bedeutet, dass alle API-Funktionen zu Funktionszeiger-Dereferenzen aus einer Nachschlagetabelle ausgewertet werden.
Dies ist ein benutzerdefiniertes Makro, das nicht von Qiskit selbst definiert wurde.
qk_import
int qk_import(void)
Importiere die Qiskit-C-API aus dem Paket „ Pythonqiskit -space“.
Sie müssen diese Funktion einmal pro Kompilierungseinheit aufrufen, bevor Sie versuchen, C-API-Funktionen aufzurufen. Andernfalls kommt es in der Regel zur Dereferenzierung eines Null-Zeigers zur Laufzeit.
In der Regel sollten Sie dies innerhalb der Initialisierungsfunktion Ihres PyInit_* Moduls tun. Zum Beispiel in my_extension.c:
#define QISKIT_PYTHON_EXTENSION
#include <Python.h>
#include <qiskit.h>
static struct PyModuleDef my_extension_mod = {
.m_base = PyModuleDef_HEAD_INIT,
.m_name = "my_extension",
};
PyMODINIT_FUNC PyInit_my_extension(void) {
if (qk_import() < 0) {
return NULL;
}
return PyModuleDef_Init(&my_extension_mod);
}Diese Funktion ist nur definiert, wenn vor dem Einbinden QISKIT_PYTHON_EXTENSION von qiskit.hdefiniert wurde.
Rückgabe
0 bei Erfolg, ein negativer Wert bei Fehlschlag.