(将SWIG C++转换为Python)警告301:使用了class关键字,但未在C++模式下使用 - c++

我正在尝试为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++关键字(布尔),此时SWIG barfs。

我在文档中看不到任何说明(如何?)应该告知SWIG所解析的文件是C++的信息-实际上,IIRC在文档中告诉我们SWIG能够推断出是否文件本身就是C / C++,那么到底是怎么回事?

顺便说一句,我正在使用SWIG版本2.0.4

参考方案

如果您使用的是C++,则在调用-c++时需要使用call SWIG进行编码。

在Java中,执行“ ++++++++”表达式,编译器未报告任何错误并且可以正确执行? - java

我用eclipse编写了这段代码,用war写过,结果为3d。public static void main(String[] args) { double a = 5d + + + + + +-+3d; System.out.println(a); } 参考方案 您的表情可以改写为(5d) + (+ + + + +-+3d) 其中第一个+是应用于两个操作数的…

如何用Cython保持C++类名不变? - c++

我有一个名为Foo的C++类。如果遵循Cython C++ tutorial,则需要以其他方式调用Python类,例如PyFoo。但是我确实也需要调用Python类Foo。如何有效地做到这一点?编辑:我正在尝试接口以前与Boost Python接口的现有C++库。由于不同的原因,我想测试Cython。由于使用Boost:Python调用了Python类,因此…

从C++调用Python函数 - c++

我正在尝试从C++实现调用Python函数。我以为可以通过函数指针来实现,但是似乎不可能。我一直在使用boost.python完成此操作。假设在Python中定义了一个函数:def callback(arg1, arg2): #do something return something 现在,我需要将此函数传递给C++,以便可以从那里调用它。如何使用boos…

SWIG和C++共享库 - c++

我有一个C++库(我们将其称为mylib)编译为libmylib.so中的/usr/local/lib文件,并且我在my lib中一个名为/usr/local/include的目录中有许多头文件。现在,我想做的(对于初学者而言)只是将其中一个头文件(包含有关我的图书馆提供的类的信息)与SWIG一起使用,以生成mylib_wrap.cxx文件,然后进行编译并将…

在Python中制作Qt / C++原型 - c++

我想用Qt编写一个C++应用程序,但是先使用Python构建一个原型,然后逐渐用C++替换Python代码。这是正确的方法吗?我应该使用哪些工具(绑定,绑定生成器,IDE)?理想情况下,所有内容都应该在Ubuntu存储库中可用,因此我不必担心不兼容或旧版本,并使用简单的aptitude install设置所有内容。是否有关于此过程的全面文档,还是我必须学习每…