2014-05-20 58 views
8

有人可以告訴我我是否做錯了什麼。建築/包括VS2013中的Boost.Python

我在使用Visual Studio 2013的Windows 7上,我希望能夠設置一個簡單的Boost.Python項目。我不知道我是否犯了錯誤建設提升或當包括在我的項目提振。

錯誤

當我嘗試#include任何升壓Python模塊,例如#include <boost/python/module.hpp>我在Visual Studio中出現以下錯誤。

1>c:\boost_1_55_0\boost\python\detail\wrap_python.hpp(50): fatal error C1083: Cannot open include file: 'pyconfig.h': No such file or directory 

大廈

我試圖按照從this SO thread in which KTC addresses Python指示,並this Python howto from Boost,但由於這兩個鏈接都有點過時,都做不同的事情,一些步驟似乎在新版本中已經改變的Boost,我不得不根據一些指示即興發揮。

這就是我所做的。

  1. 將Boost源文件的最新版本(1.55)解壓縮到C:\boost_1_55_0
  2. 使用cmd.exe導航到C:\boost_1_55_0。 (我沒有使用Developer Command Prompt for VS2013\Microsoft Visual Studio 12.0\Common7\Tools\Shortcuts下找到。這是不應該有任何區別,應該嗎?Boosts official guide for 1.55沒有做出使用Command Prompt for VS2013的任何具體提及。
  3. 在cmd中使用bootstrap
  4. 編輯project-config.jam(由bootstrap創建),並添加路徑我的Python 3.4安裝C:\Python34。我.jam文件現在看起來像在項目 - config.jam中看到。
  5. 用於CMD .\b2開始構建過程。雖然我在有很多的警告建成(forcing value to bool 'true' or 'false' (performance warning)等),它的確如此內置完成後似乎沒有任何錯誤消息。

包括

這是我建立了我的項目在Visual Studio中。

  1. 創建一個新項目。
  2. 中添加的代碼測試代碼
  3. 在VC++目錄中的項目屬性:
    1. 新增C:\boost_1_55_0Include Directories
    2. 添加了C:\boost_1_55_0\stage\lib(我能找到.lib文件的文件夾)到Library Directories

項目 - config.jam中

import option ; 

using msvc ; 

option.set keep-going : false ; 

using python : 3.4 : C:\\Python34\\python ; 

測試代碼

來源:boost_1_55_0\libs\python\example\getting_started1.cpp

#include <boost/python/module.hpp> 
#include <boost/python/def.hpp> 
#include <string> 

namespace 
{ 
    // A couple of simple C++ functions that we want to expose to Python. 
    std::string greet() { return "hello, world"; } 
    int square(int number) { return number * number; } 
} 

namespace python = boost::python; 

BOOST_PYTHON_MODULE(getting_started1) 
{ 
    // Add regular functions to the module. 
    python::def("greet", greet); 
    python::def("square", square); 
} 
+0

我有這個的蟒蛇,注意多include目錄:'使用python :3.5 :d:\\ \\溫度蟒蛇\\ \\ PCbuild#python.exe CMD-或前綴 :d:\ \ temp \\ python \\ include D:\\ temp \\ cpythonorig \\ PC :D:\\ temp \\ python \\ PCbuild;' – stijn

+0

'using python:3.4:C:\\ Python34 \\ python; ' - 不是拖尾的'\\ python'多餘的? –

+0

@UlrichEckhardt你這麼認爲?我不知道。我只是從[KTC的帖子中複製它]複製它(http://stackoverflow.com/questions/2629421/how-to-use-boost-in-visual-studio-2010/2655683#2655683)。但是我會很高興能夠幫助我發現錯誤。我的項目似乎正在工作,但我有一個警告,我無法擺脫,'1> c:\ python \ python34 \ include \ pymath.h(22):warning C4273:'round':inconsistent DLL連接「,所以也許我仍然做錯了什麼。 – Adelost

回答

10

看來我只是需要在我的包含和庫依賴關係中添加一個路徑到Python34/include/Python34/libs/

+1

謝謝你的幫助!對未來訪問者來說,最好的方法是使用'PYTHONPATH'環境變量,就像在[這個答案](http://stackoverflow.com/a/4855685/3524982)中一樣,而不是單獨添加每個目錄。 – DJMcMayhem