diff --git a/rtc_plugins.cpp b/rtc_plugins.cpp index 825d596..f6a33b3 100644 --- a/rtc_plugins.cpp +++ b/rtc_plugins.cpp @@ -1,7 +1,8 @@ #include #include +#define PY_ARRAY_UNIQUE_SYMBOL rtc_plugins_ARRAY_API #define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION -#include +#include #include @@ -104,20 +105,23 @@ int sendCustomAudioData(const int16_t destChannelIndex, py::object pD, int32_t s } } -// 修改后的初始化函数 -int init_numpy() { - if (import_array() < 0) { + +void init_numpy() { + // 直接调用底层函数,绕过宏的问题 + if (_import_array() < 0) { PyErr_SetString(PyExc_ImportError, "numpy.core.multiarray failed to import"); - return -1; + throw std::runtime_error("NumPy initialization failed"); } - return 0; } - BOOST_PYTHON_MODULE(rtc_plugins) { - if (init_numpy() != 0) return; + try { + init_numpy(); - py::def("init", &init); - py::def("initRecv", &initRecv); - py::def("initSend", &initSend); - py::def("sendCustomAudioData", &sendCustomAudioData); + py::def("init", &init); + py::def("initRecv", &initRecv); + py::def("initSend", &initSend); + py::def("sendCustomAudioData", &sendCustomAudioData); + } catch (...) { + PyErr_SetString(PyExc_RuntimeError, "Module initialization failed"); + } } \ No newline at end of file