我正在尝试为我正在整理的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:错误:字符串:没有这样的文件或目录
非常感谢任何想法,谢谢。
答案 0 :(得分:2)
您正在编译C代码 - 您提到的标题是C ++的一部分,而不是C.要编译为C ++代码,请使用g ++驱动程序而不是gcc,并为源文件提供.cpp扩展名而不是.c。< / p>