Swig:要么丢失 /bits/c++config.h 要么找不到包含

Posted

技术标签:

【中文标题】Swig:要么丢失 /bits/c++config.h 要么找不到包含【英文标题】:Swig: either missing /bits/c++config.h or includes cannot be found 【发布时间】:2018-01-31 18:49:23 【问题描述】:

我在 swig 方面遇到了很大的麻烦。 我想用 C++ 编写一个库来包含它并将其用作 python 扩展。 问题是,当我使用以下命令时,swig 抱怨其他包含,它找不到:

swig -python -Isrc myModule.i

输出如下:

Error: unable to find 'forward_list'

还有一些在我的接口文件中指定的:

/* file: myModule.i */
%module myModule
%
#include <forward_list>
#include <string>
#include <set>
#include "myModule.h"
%

%include "myModule.h"
%include <forward_list>
%include <string>
%include <set>

我按照说明合并了其他目录并使用了以下命令:

swig -python -I/usr/include/c++/5 -Isrc myModule.h

然后 swig 抱怨在

中丢失了文件
/usr/include/c++/5/bits

例如 c++config.h。我同时安装了 c++-multilib 和 g++-multilib。 但是,这些包已安装到另一个目录:

/usr/include/x86_64-linux-gnu/c++/5/bits

所以我现在可以决定,是否要通过指定 -I 来查找必要的文件,或者能够找到位于其他文件夹中的包含文件。 我能做什么,或者更确切地说,我做错了什么?

【问题讨论】:

相关:***.com/questions/31816095/… &lt;forward_list&gt; 是在 C++11 中添加的,请检查您的编译器和编译器标志。见:en.cppreference.com/w/cpp/header 链接的问题在这里无关紧要。提问者不直接包括部分位。我怀疑这是因为没有启用 C++11。 【参考方案1】:

似乎我只是忘记在命令中添加-c++ 选项。这显然让 swig 知道,它是 c++ 代码。关于bits/&lt;xy&gt;.h 的错误信息就消失了。

【讨论】:

以上是关于Swig:要么丢失 /bits/c++config.h 要么找不到包含的主要内容,如果未能解决你的问题,请参考以下文章

icpc 无法打开源文件“bits/c++config.h”错误

g++ 4.6 没有 <bits/c++config.h> 头文件 cstring 要求的文件

numpy.i 丢失。推荐的安装方式是啥?

在 Ubuntu 中在 32 位上交叉编译 64 位程序时缺少包含“bits/c++config.h”

在无法访问库源的情况下使用 swig c++ 到 python

vs.net 2005中web.config智能感知丢失时