2017-09-24 5 views
-1

Pythonライブラリを生成:私はインターフェイスファイルstd_vector.iとSTLを含んでいたベクトルアロケータ引数エラーSWIGを使用している間、私はSWIGを使用し、C++コードからPythonライブラリを生成し、次のエラーが発生している

TypeError: in method 'new_SpikeGeneratorFromVector', argument 1 of type 'std::vector< int,std::allocator< int > >'

を。私はいくつかのことが必要と思われた。整数リストを関数に渡すと、上記のエラーが発生します。

何か助けていただければ幸いです。

+1

を[MCVE]を作成する方法を読んで、その後、問題を再現するためにいくつかのコードを表示してください。 '%template'を使わなかったと思います。 –

+0

@MarkTolonen私はいくつかの機密性の問題のためにここにすべての問題を投稿することができませんでしたが、私はそれ以上の、特定の申し訳ありませんでした。しかし、問題は実際にあなたが提案したようなテンプレートの使用でした。今は期待どおりに動作します。ありがとう! – CodeNinja

答えて

0

それは助けることがあります。

/* File : example.i */ 

%module example 

%{ 
#include "example.h" 
%} 

%include "std_vector.i" 
namespace std { 
    %template(IntVector) vector<int>; 
} 

%include "example.h" 

/*example.h*/ 
void my_func(std::vector<int> v) 
{ 
    for (int i=0; i<v.size(; i++)) 
     std::cout<<v[i]<<"\n"; 
} 

/*in runme.py*/ 

import example 
# call with a python list: 
print example.my_func([1, 2, 3, 4]) 
#call with a python tuple: 
print example.my_func((1, 2, 3, 4)) 
# ... or a wrapped std::vector<int> 

v = example.IntVector(4) 
for i in range(len(v)): 
    v[i] = i + 1 
print example.my_func(v) 
関連する問題