python調用c++擴充模組

來源:互聯網
上載者:User

昨天完成了用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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.