swig c++;对于python(使用numpy):错误:使用未声明的标识符';导入数组';

swig c++;对于python(使用numpy):错误:使用未声明的标识符';导入数组';,python,c++,numpy,swig,Python,C++,Numpy,Swig,操作系统:macOS Sierra 10.12.4 python发行版:AnacondaPython 3.6 我正在学习如何用ditudil将Nuffy数组传递给C++。 运行时出现错误: $ python setup.py build_ext 错误: sample_wrap.cpp:4571:3: error: use of undeclared identifier 'import_array' import_array(); ^ 1 error generated. 文件:sa

操作系统:macOS Sierra 10.12.4

python发行版:AnacondaPython 3.6

我正在学习如何用ditudil将Nuffy数组传递给C++。 运行时出现错误:

$ python setup.py build_ext
错误:

sample_wrap.cpp:4571:3: error: use of undeclared identifier 'import_array'
  import_array();
  ^
1 error generated.
文件:
sample.i

/* file: sample.i */
%module sample
%{
/* include C++ header files necessary to compile the interface */
#include "src/sample.h"
%}

%include "typemaps.i"
%include "src/numpy.i"
%init %{
import_array();
%}

%apply (int DIM1, double* IN_ARRAY1) {(int n, double *a), (int m, double *b)};
%apply (int DIM1, double* ARGOUT_ARRAY1) {(int size, double *arr)};

%include "src/sample.h"
文件:
setup.py

# ----- file: setup.py -----

from distutils.core import setup, Extension
import numpy
import os

name = "sample"    # name of the module
version = "1.0"        # the module's version number

os.environ['CC'] = 'g++';
os.environ['CXX'] = 'g++';

setup(name=name, version=version,
    ext_modules=[Extension(name='_sample',
                           sources=["sample.i", "src/sample.cpp"],
                           include_dirs=['src',numpy.get_include()],
                           swig_opts=["-c++"]
                           )]
    )
文件:
src/sample.cpp

/* ----- file: src/sample.cpp ----- */

#include <cmath>
#include "sample.h"

double dot(int n, double *a, int m, double *b){
    double sum = 0.0;
    for (int i=0; i<n; ++i){
      sum += a[i]*b[i];
    }
    return sum;
}

void arange(int size, double *arr){
    for (int i=0; i<size; ++i)
    arr[i] = i;
}
我已尝试将
os.environ['CC']='g++'
os.environ['CXX']='g++'
更改为
os.environ['CC']='g++-6'
os.environ['CXX']='g++-6'
以便用GUN g++编译时不会发出叮当声,但仍会出现类似错误:

sample_wrap.cpp: In function 'PyObject* PyInit__sample()':
sample_wrap.cpp:4571:16: error: 'import_array' was not declared in this scope
   import_array();
                ^
基于此,我将尝试添加
#使用_INIT
定义SWIG_文件

/*文件:sample.i*/
%模块样本
%{
#使用_INIT定义SWIG_文件
#包括“src/sample.h”
%}
sample_wrap.cpp: In function 'PyObject* PyInit__sample()':
sample_wrap.cpp:4571:16: error: 'import_array' was not declared in this scope
   import_array();
                ^