使用swig和distutils时,GCC无法识别标准头文件

时间:2010-07-08 11:22:01

标签: gcc swig distutils

我正在尝试为我正在整理的C ++库生成一个python包装器。我刚遇到SWIG,并试图将其与distutils结合使用。我正在修改别人的代码,因此会出现奇怪的错误,但这个只是令人困惑。

我已经设法用SWIG生成一个c ++包装器文件,现在我正在尝试运行一个修改后的setup.py版本来安装包装器(它本身可能会也可能不会工作,但我会越过那个桥当谈到它时。)当执行此编译器时,会弹出无法包含头文件的错误。特别是 - 字符串,ostream,sstream,地图和矢量。所有这些都是标准库,包含在“include”中。

代码本身编译,但在尝试以这种方式创建包装时它不会。

我不完全确定哪些信息与此相关,但这是扩展的方式:

## Extension definition
import os
wrapsrc = './project_rewrite_wrap.c'
incdir_src = os.path.abspath('../include/project')
incdir_build = os.path.abspath('../include/project')
libdir = os.path.abspath('../lib')
ext = Extension('_project_rewrite',
                [wrapsrc],
                include_dirs=[incdir_src, incdir_build],
                library_dirs=[libdir, os.path.join(libdir,'.libs')],
                libraries=['ProjectMain'])

运行的gcc命令是:

  

gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I / home / ben / Project / rewrite / include / Project -I / home / ben / Project / rewrite / include / Project -I / usr / include / python2.6 -c ./project_rewrite_wrap.c -o build / temp.linux-i686-2.6 /./project_rewrite_wrap.o

导致错误,例如:

  

./project_rewrite_wrap.c:2696:18:错误:字符串:没有这样的文件或目录

非常感谢任何想法,谢谢。

1 个答案:

答案 0 :(得分:2)

您正在编译C代码 - 您提到的标题是C ++的一部分,而不是C.要编译为C ++代码,请使用g ++驱动程序而不是gcc,并为源文件提供.cpp扩展名而不是.c。< / p>