Hi,
I've been happy to use numpy.i for generating SWIG interfaces to C++.
For a while, I've noticed this warning while compiling:
/Users/tkrauss/projects/dev_env/lib/python2.7/site-packages/numpy-1.8.0.dev_f2f0ac0_20120725-py2.7-macosx-10.8-x86_64.egg/numpy/core/include/numpy/npy_deprecated_api.h:11:2:
warning: #warning "Using deprecated NumPy API, disable it by #defining
NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION"
and today tried to get rid of the warning.
So, in numpy.i, I followed the warning's advice. I added the # def here:
%{
#ifndef SWIG_FILE_WITH_INIT
# define NO_IMPORT_ARRAY
#endif
#include "stdio.h"
*#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION*
#include
%}
SWIG was happy, but when compiling the C++ wrapper, there were many
warnings followed by many errors. The warnings were for redefinition
of NPY_MIN_BYTE and similar. The errors were for all kinds of stuff,
excerpt here:
native_wrap.cpp:3632: error: ‘PyArray_NOTYPE’ was not declared in this scope
native_wrap.cpp:3633: error: cannot convert ‘PyObject*’ to ‘const
PyArrayObject*’ for argument ‘1’ to ‘int PyArray_TYPE(const PyArrayObject*)’
native_wrap.cpp: At global scope:
native_wrap.cpp:3877: error: ‘intp’ has not been declared
native_wrap.cpp: In function ‘int require_fortran(PyArrayObject*)’:
native_wrap.cpp:3929: error: ‘struct tagPyArrayObject’ has no member named
‘nd’
native_wrap.cpp:3933: error: ‘struct tagPyArrayObject’ has no member named
‘flags’
native_wrap.cpp:3933: error: ‘FARRAY’ was not declared in this scope
native_wrap.cpp:20411: error: ‘struct tagPyArrayObject’ has no member named
‘data’
It looks like there is a new C API for numpy, and the version of numpy.i
that I have doesn't use it.
Is there a new version of numpy.i available (or in development) that works
with the new API? Short term it will just get rid of a warning but I am
interested in a good long term solution in case I need to upgrade numpy.
Thanks,
Tom