1. 程式人生 > >python呼叫c++擴充套件模組

python呼叫c++擴充套件模組

昨天完成了用python呼叫c++,在這裡做個記錄。

整個操作流程如下:

1.去http://www.boost.org/下載boost包,我用的是boost_1_48_0.zip

2.解壓,進入目錄找到bootstrap.bat 指令碼,並執行,會在相同資料夾生成 bjam.exe檔案

3.開啟VS2005 在tools->...command prompt,定位到boost主目錄下,執行bjam --with-python --build-type=complete stage

編譯成功後會在 ...\boost_1_48_0\stage\lib 下找到python所使用的boost庫包括.lib 和 .dll

4.在vs2005中新建一個空的動態連結庫工程,設定工程的屬性,把boost的庫路徑 ...\boost_1_48_0\stage\lib

python庫路徑 ...\Python27\libs (python安裝目錄)加上;把標頭檔案路徑 ...\Python27\include 和 ...\boost_1_48_0 加上

5.新建hello.cpp檔案,把下面程式碼拷進去

#include <boost/python/module.hpp>
#include <boost/python/def.hpp>

char const* greet()
{
   return "hello, world";
}

BOOST_PYTHON_MODULE(hello_ext)
{
    using namespace boost::python;
    def("greet", greet);

}


6.編譯,生成,把輸出的dll改名為hello_ext.pyd,

也可以在工程屬性中設定輸出名為hello_ext.pyd
  注意:必須與BOOST_PYTHON_MODULE(hello_ext)中模組名相同(我用的是hello_ext)

7.最後把hello_ext.pyd和boost_python-vc90-mt-gd-1_48.dll
拷貝到python的工作目錄下,不過重新驗證一下好像boost_python-vc90-mt-gd-1_48.dll不拷也可以

8.在python 工作目錄下新建hello.py編寫如下程式碼:

import hello_ext

hello_ext.greet()

執行就可以了。

參考:http://hi.baidu.com/zhouhanqing/blog/item/cfeb8c3c0f6b66cf9e3d62f4.html