我正在尝试将 Python 嵌入到基于 C++ 的编程语言中(CCL:计算控制语言,你们中的任何一个都没有听说过)。因此,我并没有真正的“主要”功能来进行调用。
我用main做了一个测试.cc程序,当我编译运行它时,我可以导入我自己的python模块和系统模块来使用。
当我将我的代码嵌入到基于 CCL 的程序中并编译它(使用 g++)时,似乎我拥有大部分功能,但我收到运行时错误: 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++ 方面时,我似乎已经正确链接了对象。
谢谢。
最佳答案
Python 运行时实际上是您的程序使用的库的集合。这些库获取字符串,将它们转换为 Python 字节码,然后解释字节码。您收到的错误是,作为解释程序的一部分,Python 运行时需要调用一个函数 (PyType_GenericNew
),但该函数在您系统上已编译的 Python 运行时中不存在。脱离函数的名称,这不是您可以忽略或解决的问题。它是运行时的基本组成部分。
假设您的 PATH
是正确的,您最好的解决方案是重新安装或重建 Python。您的安装缺少一些重要的东西。
关于c++ - 导入 ctype;在 C++ 应用程序中嵌入 python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2954581/