2017-08-14 104 views
0

雖然試圖在Visual Studio上安裝Boost Python我得到的結果很少。我能夠創建Boost.Python庫,並且boost_python ... lib文件也已經創建,這使我花了很長時間才弄清楚如何實現這一點。提升Python找不到dll文件

但是,現在在visual studio中,在向鏈接器添加include和庫路徑之後,我無法獲得一個小測試程序來工作。

當試圖運行下面的代碼行:

Py_Initialize(); 
using namespace boost::python; 
object main_module((handle<>(borrowed(PyImport_AddModule("__main__"))))); 

我收到以下錯誤

程序無法啓動,因爲boost_python-vc141-1_65.dll是失蹤...

當我在boost庫中查找庫(在stage文件夾中)時,我可以清楚地看到這個文件,並且我已經將該程序與該文件夾相關聯。

我試過各種不同的Boost版本。

最新的穩定版本1.64與Beta 1.65版本有相同的問題。在之前的版本1.61中,我甚至無法讓Boost.Python構建。

我也嘗試了不同的Python版本,3.6和現在2.7。我卸載了所有其他版本的Python,因此2.7版本是唯一的版本。我還確保PYTHONHOME和PYTHONPATH在系統變量中設置。 ? 我錯過了一些重要的東西來讓Boost Python庫正常工作嗎?如果需要其他信息,請詢問我將添加它,但由於我不熟悉boost和鏈接,因此我不確定哪些信息是相關的。

回答

2

在Windows上沒有/ usr/shared目錄,所以boost build腳本無法爲每個人安裝一個dll庫。所以你應該自己做這個工作。

您的dll文件必須與您的exe文件位於同一個目錄中。當你編譯boost時,它在boost輸出目錄中創建了dll庫(搜索這個文件)。因此,您必須通過自定義構建步驟或其他方式將此* .dll文件複製到您的輸出目錄(其中C++編譯器/鏈接器創建您的* .exe)。

如果啓用SafeDllSearchMode,搜索順序如下:

  • 從其中加載應用程序的目錄。
  • 系統目錄。使用GetSystemDirectory函數獲取此目錄的路徑。
  • 16位系統目錄。沒有獲得該目錄路徑的函數,但它被搜索。
  • Windows目錄。使用GetWindowsDirectory函數獲取此目錄的路徑。
  • 當前目錄。
  • PATH環境變量中列出的目錄。請注意,這不包括App Paths註冊表項指定的每個應用程序路徑 。在計算DLL搜索路徑時,應用路徑密鑰不是 。

如果SafeDllSearchMode被禁用,檢索順序如下:

  • 從其中加載應用程序的目錄。
  • 當前目錄。
  • 系統目錄。使用GetSystemDirectory函數獲取此目錄的路徑。
  • 16位系統目錄。沒有獲得該目錄路徑的函數,但它被搜索。
  • Windows目錄。使用GetWindowsDirectory函數獲取此目錄的路徑。
  • PATH環境變量中列出的目錄。請注意,這不包括由應用程序路徑註冊表項指定的每個應用程序路徑
  • 。 計算DLL搜索路徑時不使用App Paths鍵。

Taken from here

+0

所以,如果我複製粘貼* .dll文件到哪裏我的* .exe是我應該沒事相同的目錄?或者「自定義構建步驟」是什麼意思。 –

+0

是的,它應該沒問題,但如果你考慮專業程序員的職業生涯,你的構建過程應該是自動的。爲了使其自動化,您可以添加「複製」命令作爲自定義構建步驟。但還有其他選擇。 –

+0

好吧,我愛你,我調查瞭如何處理* .dll文件,而且現在我以前並不瞭解這麼多。我創建了一個後期構建腳本,將* .dll文件複製到目標目錄中 –