您获得了路径,但没有链接到 boost 和 python 库:
-lboost_python -lpython27
另外,您正在尝试创建一个可执行文件(这就是为什么您必须添加一个main()
到示例以便编译它)。
对于 python 模块,您想要创建一个共享库,与定义的名称相匹配BOOST_PYTHON_MODULE(...)
宏。
这些模块的扩展应该是.pyd
.
-shared -o hello_ext.pyd
如果链接器找不到 boost_python 库,请检查您的 boost 库目录。根据您的安装,您应该有一个libboost_python.a
or libboost_python-mgw??-mt-1_??.a
。如果您找不到类似的东西,则必须先构建它们。
您应该决定是否要构建静态库或共享库。更多细节here.
c:\boost_1_52> b2 toolset=gcc --with-python
如果 boost 找不到你的 python 安装,这将会失败。要配置(通常是非标准位置)python,
编辑user-config.jam
。这可能在你的%HOMEDRIVE%%HOMEPATH%
or boost_1_52_0\tools\build\v2
。
定位Python configuration
在该文件中并设置正确的路径(如果 python 安装在默认位置,则不需要此步骤)。
语法是:
using python : python_version : python_base : python_incl : python_lib ;
例如:
using python : 2.7 : c:/Python27 : c:/Python27/include : c:/Python27/libs ;
如果您选择构建静态 boost python 库,则在链接程序时可能会出现其他错误。如果是这种情况,您必须表明您想要使用以下方式链接到静态库:
-DBOOST_PYTHON_STATIC_LIB
最后,编译器可能会抱怨::hypot
没有被宣布。为了解决这个问题,#include <cmath>
在包含 boost/python 标头之前。