我很惊讶地发现以下功能不会被SWIG自动包装。当然,我一定做错了,因为这是一个非常基本的例子。
接口文件(stdmap.i
):
%module stdmap;
%include "std_map.i"
%template(map_ii) std::map<int, int>;
%{
extern std::map<int, int> test_map();
%}
extern std::map<int, int> test_map();
实施(stdmap.cpp
):
#include <map>
std::map<int, int> test_map() {
return {{1, 0}, {4, 5}};
}
当包装到Python时,我得到了
> test_map()
<stdmap.map_ii; proxy of <Swig Object of type 'std::map< int,int > *' at 0x10801dd50> >
而不是
{1: 0, 4: 5}
正如所料。我在哪里犯错?