J'ai une fonction en C++ qui retourne une liste de complexe:SWIG: Comment passer la liste des complexes de C++ à python
#include <complex>
std::list< std::complex<double> > func(...);
Que dois-je faire dans le « * » .i fichier?
Merci tout le monde.
=================
après les détails:
la fonction que je voudrais utiliser en python dans xh:
std::list<std::complex<double> > roots1(const double& d, const double& e);
J'ai essayé quelques façons:
(1) xi:
%include <std_list.i>
%include <std_complex.i>
que j'essaie en IPython:
tmp = x.roots1(1.0, 2.0)
len(tmp)
et je me suis:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-5-9ebf7dab7cd9> in <module>()
----> 1 len(tmp)
TypeError: object of type 'SwigPyObject' has no len()
et:
dir(tmp)
retours:
[
...
'acquire',
'append',
'disown',
'next',
'own']
(2) xi:
%include <std_list.i>
%include <std_complex.i>
namespace std {
%template(ComplexDouble) complex<double>;
}
que, i eu erreur de compilation:
error: command 'swig' failed with exit status 1
make: *** [py] Error 1
(3) dans x.i:
%include <std_list.i>
%include <std_complex.i>
namespace std {
%template(ComplexDouble) list<complex<double> >;
}
ou:
%include <std_list.i>
%include <std_complex.i>
namespace std {
%template(ComplexDouble) list<complex>;
}
et je suis arrivé:
x_wrap.cpp:5673:32: error: ‘complex’ was not declared in this scope
template <> struct traits<complex > {
^
=============================================== =
(Mr./Ms./Mrs) m7thon me aider à trouver le problème. Dans mon contexte python:
Ubuntu: 45~14.04.1
Python: 3.4.3
SWIG: SWIG Version 2.0.11
Compiled with g++ [x86_64-unknown-linux-gnu]
Configured options: +pcre
si définir le x.i comme:
%include <std_list.i>
%include <std_complex.i>
namespace std {
%template(ComplexList) list<complex<double> >;
}
il compilera erreur. Mais cela fonctionne si x.i:
%include <std_list.i>
%include <std_complex.i>
%template(ComplexList) std::list< std::complex<double> >;
Merci m7thon.
Salut, j'ai réécrit la question. Pourriez-vous m'aider? Merci beaucoup – xhao79