2016-01-15 75 views
0

我的目標是有能力用C++調用具有有意義參數的函數。使用C++擴展Python 3.5(Windows)

我不能只用subprocess.call,因爲然後我進入main(int argc,char ** argv),我有一堆字符串來處理。我不想從字符串中解析矩陣。

我想使用Cython,因爲這似乎是合理的事情要做。但是,雖然有很多指導讓Cython運行,但其中大部分都是2.7,很少見到兩個建議同樣的事情。

我的問題基本上是否有人在這裏知道如何讓Cython在Py3.5上運行?或知道一個指南或什麼?我迷路了。

+0

如果你想從Python中調用C++代碼,你有沒有研究過使用'ctypes'模塊? – jacob

+0

它可能就像'pip3 install cython'一樣簡單,所以可能需要更多的研究工作?請參閱http://blog.behnel.de/posts/whats-new-in-cython-023.html –

+0

安裝cython從來都不是問題。問題在於瞭解如何實際使用它。到目前爲止,您似乎擁有一個.pyx文件,您可以在其中獲得python/C++代碼,您可以藉助setup.py文件和mingw32從cmd行編譯它。問題在於知道如何放置setup.py文件並讓mingw32正確編譯.pyx文件。這不適合我,我嘗試過不同的指南,不同的事情每次都會出錯。這就是爲什麼我要求一份工作指南。 'pip3 install cython'就像你需要的東西的前5%。 – Nimitz14

回答

1

好吧,所以我有一個非常愚蠢的錯誤,與msvs編譯,花費所以很多時間試圖讓mingw工作,但忘了,'msvc'是做的伎倆。對於任何路過的人,如果你是在3.5+你應該使用Visual Studio 2015與安裝用Cython後「PIP 3安裝用Cython」,創造你把這個

from distutils.core import setup 
from Cython.Build import cythonize 

setup(ext_modules = cythonize(
     "TestCython.pyx",     # our Cython source 
     #sources=["Rectangle.cpp"], # additional source file(s) 
     language="c++",    # generate C++ code 
)) 

創建.pyx文件setup.py文件(讓我們說'TestCython.pyx'),你可以在其中編寫任何你想要的東西(比如說'print(「Hello World」)')cythonize的源碼參數是可選的

然後cd進入你的.pyx和.py文件是和運行
'蟒setup.py build_ext --inplace --compiler = MSVC'

這應當編譯成.cp然後是.pyd文件(後者是您將使用的文件)。如果你剛剛有一個hello world,只要導入TestCython就會打印出來。

請參閱文檔和谷歌的任何其他。 ;)