Встраивание кода Python + Numpy в C ++ DLL обратного вызова - PullRequest
5 голосов
/ 24 сентября 2011

Я новичок встраивания Python.Я пытаюсь встроить код Python + Numpy в функцию обратного вызова C ++ (внутри DLL)

проблема, с которой я сталкиваюсь, заключается в следующем.если у меня есть:

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

все работает нормально.

, но если у меня есть:

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

, то происходит сбой во второй раз, когда он достигает _import_array ();(имеется в виду, что он работает для первого обратного вызова)

, если я вместо этого выполняю инициализацию python и numpy только один раз и финализацию в деструкторе (таким образом не каждый раз при инициализации / финализации), все выходит из строя при выходе из обратного вызова..

Проблема здесь, я полагаю, недолговечная, но я не знаю, как ее решить

1 Ответ

1 голос
/ 24 сентября 2011

Убедитесь, что ваш .dll только инициализирован один раз , независимо от того, сколько раз код фактически вызывается.

Вот ссылка на "C ++ Singleton в DLL":

Синглтон в DLL?

...