『Python』VS2015編譯源碼注意事項


一、2.5.6版本源碼編譯

  • 解壓 Python-2.5.6.tgz

  • 進入 Pcbuild8 文件夾,使用 vs 2013 打開 pybuild.sln (vs 解決方案),進入 vs2015IDE 環境

  • 進入IDE后之后,在載入解決方案時vs會要求我們進行升級操作,確認即可,完了會彈出一個升級報告的html文件,一般沒有錯誤
  • 右鍵解決方案’pcbuild’ ⇒ 屬性

    • 通用屬性

      單啟動項目 ⇒ 選擇 python

    •  配置屬性

      • 左上角的【配置】⇒ Debug(Release 可能會報錯)
      • 項目上下文 ⇒ 僅選中 python/pythoncore
  • 首先編譯 make_buildinfo 和 make_versioninfo

    分別右鍵 make_buildinfo/make_versioninfo ⇒ 僅用於項目 ⇒ 僅重新生成

  • 編譯此解決方案,最終會在開始的 PCbuild8\Win32Debug文件夾下生成 python_d.exe 和 python25_d.dll 文件,可雙擊 python_d.exe,進入 python 命令行環境。編譯中間應該有6個錯誤,解決方式如下,

  1. timezone 這個宏不再被vs2015支持,所有出現的地方都要替換為_timezone ,剩下的幾個關於時間的編譯錯誤也是如此加個下划線【_】就好了。錯誤都集中在 pythoncore下的timemodule里 line:687附近,也有幾個其他的報錯變量出現,位置也在這附近,處理方法同樣是前面加下划線。
  2. 項目的配置問題:主要是compiler編譯出的中間文件名和linker使用的文件名不匹配,參考之前的錯誤報告, 需要在配置里設置pythoncore項目的輸出文件名為$(PyDllName)_d (右鍵pythoncore ⇒ 屬性)。

二、3.6.5版本源碼編譯

整體流程同編譯2.x版本,只是編譯時錯誤不一樣,

編譯解決方案時有可能會出錯:windows sdk version 10.0.15063 was not found,解決方案是根據Fix python 3.6 build failure with VS 2015 and WinSDK!=10.0.15063所說的方法,打開python.props, 將第77行(3.6.5版本此處實際在77行后面一點),

<DefaultWindowsSDKVersion>10.0.15063.0</DefaultWindowsSDKVersion>

更改為,

<DefaultWindowsSDKVersion Condition="$(_RegistryVersion) == '10.0.15063'">10.0.15063.0</DefaultWindowsSDKVersion>

即可。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM