Ошибка import_array () при встраивании python и numpy в C ++ - PullRequest
0 голосов
/ 29 августа 2018

Я пишу простой код, пытаясь использовать Numpy в C ++. Моя ОС ubuntu16.04, с gcc5.4.0, Python2.7.12 и numpy1.15.0. Вот мой код test2.cpp:

#include "Python.h"
#include "numpy/arrayobject.h"

int main(int argc, char **argv) 
{
    Py_Initialize();     
    import_array(); 

    Py_Finalize(); 
    return 0; 
}

Я использую CMakeLists.txt вот так:

cmake_minimum_required(VERSION 3.10) 

project(test_python LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_BUILD_TYPE DEBUG)

set(PYTHON_INCLUDE_PATH /usr/include/python2.7)
set(PYTHON_LIBRARY /usr/lib/python2.7/config-x86_64-linux-gnu/libpython2.7.so)
set(NUMPY_INCLUDE_PATH /usr/local/lib/python2.7/dist-packages/numpy/core/include)

include_directories(${PYTHON_INCLUDE_PATH})
include_directories(${NUMPY_INCLUDE_PATH})

add_executable(test_python test2.cpp) 
target_link_libraries(test_python 
    ${PYTHON_LIBRARY}
)

Но пока я делаю это, у меня возникает следующая ошибка компиляции:

/usr/local/lib/python2.7/dist-packages/numpy/core/include/numpy/__multiarray_api.h:1547:144: error: return-statement with no value, in function returning ‘int’ [-fpermissive]
 #define import_array() {if (_import_array() < 0) {PyErr_Print(); PyErr_SetString(PyExc_ImportError, "numpy.core.multiarray failed to import"); return NUMPY_IMPORT_ARRAY_RETVAL; } }
                                                                                                                                                ^
/home/camsys/projects/hmr_c/test/test2.cpp:7:5: note: in expansion of macro ‘import_array’
     import_array(); 
     ^

Это странно, потому что когда я использую Python3.5 с Numpy1.15.0, все в порядке. Может кто-нибудь сказать мне, почему произошла эта ошибка и как ее решить ?

И я нашел еще один похожий вопрос, заданный 4 года назад без ответа Передача массива C ++ в python . Этот вопрос был о python3.4, а я имею дело с python2.7.

...