我正在尝试为python编译C ++扩展。
我创建了一个接口文件foo.i,如下所示:
%module foo
%include "typemaps.i" // For pointers to primitive types
%include "std_string.i" // std::string mapping
%apply const std::string& {std::string* foo}; // data types containing std::string members
%{
#define SWIG_FILE_WITH_INIT
#include "../path/to/c++/header/files/foo_header.h"
%}
%apply double *OUTPUT { double *p, double *p2, double *p3 };
%apply double *OUTPUT { double *a1, double *a2, double *a3 };
%apply double *OUTPUT { double *a, double *b };
class FooBar
{
/*
method signatures etc ...
*/
};
遇到class关键字时会发出警告。在类声明中,在其中一个方法签名中遇到C ++关键字(bool),此时SWIG barfs。
我在文档中看不到任何内容(如何?)SWIG应该被告知被解析的文件是C ++ - 事实上,IIRC,在文档中,我们被告知SWIG能够从头文件中推断文件是否是C / C ++ - 所以发生了什么?
顺便说一句,我使用的是SWIG Version 2.0.4