我目前正在尝试学习如何构建扩展模块,以便在python脚本中使用C ++函数。我使用Pythong 2.7.9 32位。 因此,我安装了Microsoft Visual Studio 2008 Express,使用其C ++编译器构建boost.python库。然后我将... \ boost_1_58_0目录添加到Visual Studio的包含路径,将... \ boost_1_58_0 \ stage \ lib添加到库路径。
之后,或多或少地遵循这个Tutorial,我创建了我的hellomodule.cpp:
#include <iostream>
using namespace std;
void say_hello(char* name)
{
cout << "Hello " << name << endl;
}
#include <boost\python\module.hpp>
#include <boost\python\def.hpp>
using namespace boost::python;
BOOST_PYTHON_MODULE(hello)
{
def("say_hello", say_hello);
}
另外,我创建了一个名为setup.py的python脚本:
#!/usr/bin/env python
from setuptools import setup, Extension
setup(
name="Hello",
version = "1.0",
ext_modules = [Extension("Hello", ["hellomodule.cpp"])
])
然后我将这两个文件放在同一目录中,打开命令行,切换到目录并运行
python setup.py build
给出了以下输出:
running build
running build_ext
building 'Hello' extension
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\BIN\cl.exe /c /nologo /Ox
/MD /W3 /GS- /DNDEBUG -ID:\Python\include -ID:\Python\PC /Tphellomodule.cpp /Fob
uild\temp.win32-2.7\Release\hellomodule.obj
hellomodule.cpp
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\INCLUDE\xlocale(342) : war
ning C4530: C++ exception handler used, but unwind semantics are not enabled. Sp
ecify /EHsc
D:\boost\boost_1_58_0\boost\python\module.hpp(8) : fatal error C1083: Cannot ope
n include file: 'boost/python/detail/prefix.hpp': No such file or directory
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio 9.0\\VC\\BIN\\c
l.exe' failed with exit status 2
我完全迷失在这里,提到的目录中存在无法找到的头文件(prefix.hpp)。谁能告诉我这里缺少什么?