我正在尝试将python嵌入到基于C ++的编程语言中(CCL:计算机控制语言,而不是你们中的任何人都听过它)。因此,我没有真正的“主要”功能来拨打电话。
我用main编写了一个测试.cc程序,当我编译并运行它时,我可以导入我自己的python模块和系统模块供使用。
当我在基于CCL的程序中嵌入代码并编译它(使用g ++)时,似乎我有大多数功能,但是我收到RUNTIME错误: ImportError:/usr/lib/python2.6/lib-dynload/_ctypes.so:undefined symbol:PyType_GenericNew
这是在运行时错误时执行的代码。
void FFSim::initCKBot (){
Py_Initialize();
PyRun_SimpleString("execfile('logical.py')");
}
logical.py导入模块,其中一个尝试执行'from cytpes import *',这会引发运行时错误。
有人可以向我解释这个问题以及如何解决这个问题吗?在编译代码的c ++方面时,似乎我已经正确地链接了对象。
感谢。
答案 0 :(得分:1)
Python运行时实际上是程序使用的库的集合。这些库接受字符串,将它们转换为Python字节码,然后解释字节码。您得到的错误是,作为解释程序的一部分,Python运行时需要调用一个函数(PyType_GenericNew
),但该函数在您系统上的已编译Python运行时中不存在。关闭函数名称,这不是您可以忽略或解决的问题。它是运行时的基础部分。
假设您的PATH
是正确的,那么您最好的解决方案是重新安装或重建Python。您的安装缺少重要的东西。