1

我正在尝试将 python 嵌入到基于 C++ 的编程语言中(CCL:计算控制语言,你们中的任何人都没有听说过)。因此,我真的没有“主要”功能来拨打电话。

我制作了一个带有 main 的测试 .cc 程序,当我编译并运行它时,我可以导入自己的 python 模块和系统模块以供使用。

当我将代码嵌入到基于 CCL 的程序中并编译它(使用 g++)时,我似乎拥有大多数功能,但我得到了一个 RUNTIME 错误:ImportError: /usr/lib/python2.6/lib-dynload/_ctypes。所以:未定义的符号:PyType_GenericNew

这是在运行时错误时执行的代码。

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

logical.py 导入模块,其中之一尝试执行“from cytpes import *”,这会引发运行时错误。

有人可以向我解释这个问题以及如何解决它吗?在编译代码的 c++ 方面时,似乎我已经正确链接了对象。

谢谢。

4

1 回答 1

1

Python 运行时实际上是您的程序使用的库的集合。这些库接受字符串,将它们转换为 Python 字节码,然后解释字节码。您得到的错误是,作为解释程序的一部分,Python 运行时需要调用一个函数 ( PyType_GenericNew),但该函数在您系统上已编译的 Python 运行时中不存在。离开函数的名称,这不是您可以忽略或解决的问题。它是运行时的基本部分。

假设你PATH是正确的,你最好的解决方案是重新安装或重建 Python。您的安装缺少一些重要的东西。

于 2010-06-02T08:53:47.343 回答