(SWIG C ++到Python)警告301:使用了类关键字,但不是在C ++模式下

时间:2011-12-23 17:49:53

标签: c++ python swig

我正在尝试为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

1 个答案:

答案 0 :(得分:10)

如果您使用C ++,则在调用时需要call SWIG -c++