繁体   English   中英

模块的Python C API版本不匹配

[英]Python C API version mismatch for module

cpp模块代码:

#include <iostream>
#include <boost/python.hpp>

void Hello()
{
    std::cout << "string: " << PYTHON_API_STRING << "\n";
    std::cout << "int: " << PYTHON_API_VERSION << "\n";
}

BOOST_PYTHON_MODULE(hello)
{
    namespace py = boost::python;
    py::def("Hello", &Hello);
}

编译:

g++ -m32 -Wall -fPIC -I /usr/include -I /usr/include/python2.5/ hello.cpp -L /usr/lib/python2.5/ -Wl,-Bstatic -lboost_python -Wl,-Bdynamic -lgcc -shared -o hello.so

python控制台(在同一主机或其他主机上,没有区别):

>>> import hello
__main__:1: RuntimeWarning: Python C API version mismatch for module hello: This Python has API version 1013, module hello has version 1012.
>>> hello.Hello()
string: 1013
int: 1013
>>>

为什么是1012? 从哪里来?

当某些内部API调用发生不兼容的更改时,Python的API版本号也会更改。 Python 2.4使用版本号1012。Python2.5和更高版本使用版本1013。

您似乎包含Python 2.5,因此应该获得1013版本。API版本在Include / modsupport.h中定义。 该文件是否已损坏或已被修改? 还有其他东西会覆盖该值吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM