cpp-module代码:
#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 console(在同一主机或其他主机上 - 没有区别):
>>> 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?来自哪里?
答案 0 :(得分:0)
当某些内部API调用发生不兼容的更改时,Python的API版本号会更改。 Python 2.4使用版本号1012.Python 2.5及更高版本使用版本1013。
您似乎包含Python 2.5,因此您应该获得1013版本.API版本在Include / modsupport.h中定义。该文件是否已损坏或已被修改?还有别的东西会覆盖这个值吗?