Импорт ctype; встраивание python в приложение C ++ - PullRequest
1 голос
/ 02 июня 2010

Я пытаюсь встроить python в язык программирования, основанный на C ++ (CCL: язык управления вычислениями, хотя никто из вас не слышал о нем). Таким образом, у меня нет "основной" функции для выполнения вызовов.

Я создал тестовую программу .cc с main, и когда я скомпилировал и запустил ее, я смог импортировать свои собственные модули python и системные модули для использования.

Когда я встраиваю свой код в программу, основанную на CCL, и компилирую его (с помощью g ++), кажется, что у меня больше всего функций, но я получаю ошибку RUNTIME: Ошибка ImportEr: /usr/lib/python2.6/lib-dynload/_ctypes.so: неопределенный символ: PyType_GenericNew

Это код, который выполняется при ошибке выполнения.

void FFSim::initCKBot (){   
    Py_Initialize(); 
    PyRun_SimpleString("execfile('logical.py')");
}

logic.py импортирует модули, один из которых пытается выполнить «из импорта cytpes *», что приводит к ошибке времени выполнения.

Может кто-нибудь объяснить мне это и как решить эту проблему? Кажется, что я правильно связал объекты при компиляции аспекта кода на c ++.

Спасибо.

1 Ответ

1 голос
/ 02 июня 2010

Среда выполнения Python представляет собой набор библиотек, которые использует ваша программа. Эти библиотеки принимают строки, преобразуют их в байт-код Python, а затем интерпретируют байт-код. Ошибка, которую вы получаете, заключается в том, что для интерпретации программы во время выполнения Python необходимо вызвать функцию (PyType_GenericNew), но эта функция не существует во время компиляции Python в вашей системе. Если отказаться от имени функции, это не то, что вы можете игнорировать или обойти. Это фундаментальная часть времени выполнения.

Если ваш PATH правильный, лучшим решением будет переустановить или перестроить Python. В вашей установке отсутствует что-то важное.

...