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

标签 c++ python import ctypes embedding

我正在尝试将 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/

相关文章:

c++ - 在容易发生异常的代码中使用 va_list 是否安全?

python - 除非程序崩溃,否则子 multiprocessing.Process 没有打印输出

R - 如何导入带有 block 的巨大 .csv?

eclipse - EGit,为 URI、主机和存储库路径选择正确的参数。

python - 使多个 if 语句不那么冗长

Python 导入文本文件作为列表进行迭代

c++ - Lua 模块从 DllMain 推送 C 函数

c++ - QNetworkReply 没有数据

c++ - 依赖于 C++ 的编译器优化

python - 使用 numpy.interp 的线性插值