使用Cython的一些小問題

安裝:

py -m pip install cython

py代碼轉C代碼

py -m cython main.py --embed

此處若是不加 --embed ,gcc編譯時會出現 undefined reference to `wWinMain@16' 錯誤python

若是遇到這樣的提示windows

FutureWarning: Cython directive 'language_level' not set, using 2 for now (Py2).

在你的py代碼中加入(若是你自己用的就是python2能夠忽略)測試

# cython: language_level=3

編譯

#編譯爲控制檯應用,測試期最好使用這種方式,能夠知道爲啥報錯
gcc -o main.exe main.c -I E:\Soft\Python\3.6.8_32\include -L E:\Soft\Python\3.6.8_32\libs -lpython36 -municode

#編譯爲window視窗程序(無黑框)
gcc -o main.exe main.c -I E:\Soft\Python\3.6.8_32\include -L E:\Soft\Python\3.6.8_32\libs -lpython36 -municode -Wl,--subsystem,windows

調試

編譯好的程序運行可能會遇到:spa

NameError: name '__file__' is not defined.net

這是由於 __file__ 只針對py文件存在,編譯以後是無效的,須要替換成:調試

os.getcwd()  //運行目錄
sys.path[0]  //執行文件所在目錄

至於dll丟失,路徑不對等問題,慢慢排查吧code



做者:Spooking
連接:https://www.jianshu.com/p/d2e82fd0f76d
 ip

相關文章
相關標籤/搜索