Неопределенные символы с Python.h - PullRequest
1 голос
/ 05 июля 2011

Я пытаюсь встроить скрипт Python в приложение C ++.Прежде чем я сделаю это, я пытаюсь запустить пример сценария.

Вот мой код:

#include <Python/Python.h>
int main(int argc, char *argv[]) {
Py_Initialize();
PyRun_SimpleString("from time import time,ctime\n"
                   "print 'Today is',ctime(time())\n");
Py_Finalize();
return 0;
}

Компиляция с g ++ дает мне:

Undefined symbols:
  "_Py_Initialize", referenced from:
      _main in cc2Ogphq.o
  "_PyRun_SimpleStringFlags", referenced from:
      _main in cc2Ogphq.o
  "_Py_Finalize", referenced from:
      _main in cc2Ogphq.o
ld: symbol(s) not found

Я использую Mac OSX Snow Leopard и Python 2.7.2.

Ответы [ 3 ]

4 голосов
/ 05 июля 2011

Вам необходимо создать ссылку на библиотеки Python, например, libpython.a для статической связи.

1 голос
/ 28 августа 2011

Этот ответ старый и отвратительный (статичный, eww).

distutils - ответ для большинства случаев.

Если вы действительно настаиваете на DIY, добавьте это в ваш ~ / .profile:

# Works on Lion

alias pygcc='gcc -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7/ /usr/lib/python2.7/config/libpython2.7.dylib'

alias pyg++='gcc -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7/ /usr/lib/python2.7/config/libpython2.7.dylib'

Использование: pyg ++ yourfile.cc

pygcc someotherfile.c

0 голосов
/ 26 июля 2011

конечно, я немного опоздал с ответом, но у меня была идентичная проблема, и мне нужно было сделать некоторые поиски, я использую Ubuntu 11, решение оболочки bash:

g ++ c_pyth.cpp -o c_pyth -I /usr/include/python2.7/ /usr/lib/python2.7/config/libpython2.7.so

, если вы не включите /usr/include/python2.7/компилятор не увидит "Python.h"

, если вы не включите /usr/lib/python2.7/config/libpython2.7.so, компилятор не сможет сделать статический исполняемый файлфайл

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...