我正在尝试为我放在一起的 C++ 库生成一个 python 包装器。我刚刚遇到 SWIG,并试图将其与 distutils 结合使用。我正在修改别人的代码,所以会出现奇怪的错误,但这只是令人困惑。
我已经设法用 SWIG 生成了一个 c++ 包装器文件,现在我正在尝试运行 setup.py 的修改版本以安装包装器(它本身可能工作也可能不工作,但我会在它到来时越过那座桥到它。)执行此操作时,会弹出有关无法包含头文件的编译器错误。具体来说 - 字符串、ostream、sstream、map 和向量。所有这些都是标准库,包括在“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/包括/项目 -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:错误:字符串:没有这样的文件或目录
任何想法将不胜感激,谢谢。