發表文章

目前顯示的是 5月, 2014的文章

利用 MinGW 與 boost::python 建立 64bit 的 python 模組

時隔多年的文章,這次要介紹的是,如何使用 64bit MinGW 與 boost::python 來建立 64 bit  python 的 C++ 模組。 若你是使用 MSVC 的話,基本上只要看官網上面的介紹就可以輕鬆建立 C++ 的模組。使用 MinGW 的話,若你只是要建立 32 bit 的模組也是照官網上面指示即可。但是當你使用 64 bit 的 MinGW 的話,要建立 64 bit 的 python 模組的話,這官網指示是會有點問題的。 在摸索一段時間後,總算發現出真正可行的作法。以下簡單說明一下。 目標:使用 64bit MinGW 與 boost::python 建立 64bit 的 python 的 C++ 模組 基本需求: [1] 64 bit 的 MinGW,這裡你這可以用 tdm gcc。我使用的版本是 4.8.1 [2] 64 bit 的 python,這個你可以到官網抓安裝檔案即可。2.7 或 3.4 系列都可以。 [3] boost lib,這個到官網抓最新的版本即可。我使用 1.55。 步驟: [1] 先編譯出 boost::python,這個 lib 是 boost 裡面的其中一支。編譯指令如下: b2 toolset = gcc address - model = 64 variants = debug , release link = static , shared threading = multi define = MS_WIN64 — with - python stage 這裡的重點是 " define = MS_WIN64 " ,其他的項目你可以是你需求來改變,但是這個 " define = MS_WIN64 " 一定要加上。 原因是 64bit 的 python lib 是利用這個 MS_WIN64 來選擇 64 bit 的函數,而 MSVC 裡面有預先定義,MinGW 裡面沒有,所以照官網的作法會在編譯模組時發生錯誤。 [2] 準備 64 bit 的 python lib 。 在 32 bit 的安裝檔案中 libpython27.a (32bit) 或是 libpython34.a (32bit) 是會安裝到電腦裡面的,但