导入ctype;在C ++应用程序中嵌入python

时间:2010-06-02 02:13:43

标签: c++ python import ctypes embedding

我正在尝试将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 ++方面时,似乎我已经正确地链接了对象。

感谢。

1 个答案:

答案 0 :(得分:1)

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

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