【发布时间】:2010-06-02 02:13:42
【问题描述】:
我正在尝试将 python 嵌入基于 C++ 的编程语言(CCL:计算控制语言,你们中没有人听说过)。因此,我并没有真正的“主”函数来进行调用。
我已经做了一个带有main的.cc测试程序,当我编译并运行它时,我可以导入我自己的python模块和系统模块来使用。
当我将我的代码嵌入到基于 CCL 的程序中并编译它(使用 g++)时,我似乎拥有了大部分功能,但我得到了一个 RUNTIME 错误: ImportError:/usr/lib/python2.6/lib-dynload/_ctypes.so:未定义符号:PyType_GenericNew
这是在运行时出错时执行的代码。
void FFSim::initCKBot (){
Py_Initialize();
PyRun_SimpleString("execfile('logical.py')");
}
logical.py 导入模块,其中一个尝试执行“from cytpes import *”,这会引发运行时错误。
有人可以向我解释一下这个问题以及如何解决它吗?在编译代码的 c++ 方面时,似乎我已经正确链接了对象。
谢谢。
【问题讨论】:
-
您能否提供显示此错误的最少源代码(编辑您的帖子)?您是否能够使用纯 C++ 或仅使用 CCL 产生错误(编辑:没关系,我需要更彻底地阅读)? ctypes 是唯一给您带来麻烦的东西,还是其他模块?
-
其实是RUNTIME错误。 CCL 没有编译,就像 Python 一样。我用 CCL 调用的 c++ 函数给出了错误: void FFSim::initCKBot (){ Py_Initialize(); PyRun_SimpleString("execfile('logical.py')");错误发生在 execfile('logical.py') 中,它导入了一个模块 'can'。 'can.py' 成功导入 'struct' 和 'cmd' 然后尝试执行 'from ctypes import *' 行,程序失败,打印运行时错误,在 execfile('logical.py ')。
标签: c++ python import ctypes embedding