GCC не распознает стандартные заголовочные файлы при использовании swig и distutils - PullRequest
0 голосов
/ 08 июля 2010

Я пытаюсь сгенерировать оболочку Python для библиотеки C ++, которую я собираю.Я только что столкнулся с SWIG и пытаюсь использовать это в сочетании с distutils.Я изменяю чей-то другой код, так что можно было ожидать странных ошибок, но эта просто сбивает с толку.

Мне удалось создать файл оболочки c ++ с помощью SWIG, и сейчас я пытаюсь запустить измененную версиюsetup.py для того, чтобы установить обертку (которая сама может работать или не работать, но я перейду этот мост, когда дело доходит до нее.) При выполнении этого компилятора всплывают ошибки о невозможности включить заголовочные файлы.В частности - строка, ostream, sstream, map и vector.Все они являются стандартными библиотеками, включенными как «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 / переписать / включить / Project -I / home / ben / Project / переписать / включить / 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 Ответ

2 голосов
/ 08 июля 2010

Вы компилируете код C - упомянутые вами заголовки являются частью C ++, а не C. Чтобы скомпилировать как код C ++, используйте драйвер g ++ вместо gcc и предоставьте исходным файлам расширение .cpp вместо .c.

...