2017-08-28 9 views
1

端末から次のコードを実行するとエラーが発生しました。 は、ここに私のコードです: number.h:エラー:SWIGを使用したタイプ名 'class'が不明

class Number{ 
public: 
    Number(int start); 
    void add(int x); 
    void sub(int x); 
    void display(); 
    int data; 
}; 

number.cxx:

#include <iostream> 
#include "number.h" 

using namespace std; 
Number::Number(int start){ 
    data=start; 
} 
void Number::add(int x){ 
    data=data+x; 
} 
void Number::sub(int x){ 
    data=data-x; 
} 
void Number::display(){ 
    cout<<"Data is "<<data<<endl; 
} 

number.i:

%module number 
%{ 
#include "number.h" 
%} 

%include number.h 

そして最後に、setup.py:

from distutils.core import setup, Extension 

name="number" 
version="1.0" 

ext_modules=Extension(name="_number",sources=["number.i","number.cxx"]) 

setup(name=name, 
    version=version, 
    ext_modules=[ext_modules]) 

アフト実行中python setup.py install、エラーが発生しました error: unknown type name ‘class’なぜそうですか?

+3

Cはこの一環でありますか? – Yunnosch

+0

@ Yunosch申し訳ありません。 – Ayush

答えて

1

デフォルトのSWIGをコンパイルします。をパラメータとしてExtensionに追加します。他のC++エラーを訂正した後、これは、Microsoftのコンパイラを使用して私のために働いたsetup.pyは次のとおりです。

from distutils.core import setup, Extension 

name="number" 
version="1.0" 

ext_modules=Extension(name="_number", 
         sources=["number.i","number.cxx"], 
         swig_opts=['-c++'], 
         extra_compile_args=['/EHsc']) 

setup(name=name, 
     version=version, 
     ext_modules=[ext_modules]) 

デモ:

>>> import number 
>>> n=number.Number(5) 
>>> n.display() 
Data is 5 
>>> n.add(2) 
>>> n.display() 
Data is 7 
関連する問題