2014-05-20 14 views
8

क्या कोई मुझे बता सकता है कि मैं कुछ गलत कर रहा हूं।बिल्डिंग/Boost.Python सहित VS2013

मैं विजुअल स्टूडियो 2013 का उपयोग कर विंडोज 7 पर हूं और मैं एक साधारण बूस्ट.पथन परियोजना स्थापित करने में सक्षम होना चाहता हूं। मुझे नहीं पता कि मैंने कुछ गलत किया है बिल्डिंग बूस्ट या मेरी परियोजना में बढ़ावा देने सहित।

त्रुटि

मैं #include के लिए किसी भी बढ़ावा अजगर मॉड्यूल का प्रयास करते हैं, उदाहरण के लिए #include <boost/python/module.hpp> मुझे विजुअल स्टूडियो में निम्न त्रुटि मिलती है।

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, लेकिन जब से दोनों लिंक बिट दिनांकित हैं, कुछ अलग कर रहे हैं, और चरणों में से कुछ नए संस्करण में बदल दिया है लगता है बूस्ट के, मुझे कुछ निर्देशों पर सुधार करना पड़ा।

यही वह है जो मैंने किया था।

  1. बूस्ट स्रोत फ़ाइल के नवीनतम संस्करण (1.55) को C:\boost_1_55_0 पर अनजिप किया गया।
  2. C:\boost_1_55_0 पर नेविगेट करने के लिए cmd.exe प्रयुक्त। (मैं का उपयोग नहीं किया Developer Command Prompt for VS2013\Microsoft Visual Studio 12.0\Common7\Tools\Shortcuts के नीचे पाया। यह कोई फर्क नहीं करना चाहिए, चाहिए यह? Boosts official guide for 1.55Command Prompt for VS2013 का उपयोग कर के किसी भी विशिष्ट उल्लेख नहीं किया।
  3. cmd में bootstrap प्रयुक्त।
  4. संपादित project-config.jam (bootstrap द्वारा बनाई गई) और मेरे अजगर 3.4 स्थापना C:\Python34 के लिए पथ गयी। मेरे .jam फ़ाइल अब की तरह के रूप में परियोजना Config.jam में देखा देखा।
  5. प्रयुक्त cmd में .\b2 निर्माण प्रक्रिया शुरू करने के लिए। जब ​​मैं दौरान चेतावनी का एक बहुत था बनाया गया (forcing value to bool 'true' or 'false' (performance warning), आदि), यह किया निर्मित होने के बाद कोई त्रुटि संदेश प्रतीत नहीं होता है।

सहित

यह कैसे मैं दृश्य स्टूडियो में अपने प्रोजेक्ट बनाया है।

  1. एक नई परियोजना बनाई गई।
  2. टेस्ट कोड में देखा गया कोड जोड़ा गया।
  3. प्रोजेक्ट गुण में के तहत कुलपति ++ निर्देशिकाएँ:
    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

मैं अजगर के लिए इस किया था, कई ध्यान दें निर्देशिका में शामिल हैं: 'अजगर का उपयोग कर: 3.5 : डी: \\ अस्थायी \\ अजगर \\ PCbuild \\ python.exe # cmd या उपसर्ग : डी: \ \ temp \\ python \\ शामिल डी: \\ temp \\ cpythonorig \\ पीसी : डी: \\ temp \\ python \\ पीसीबिल्ड; ' – stijn

+0

'पायथन का उपयोग करते हुए: 3.4: सी: \\ पायथन 34 \\ पायथन; '- पूंछ' \\ पायथन 'अनिवार्य नहीं है? –

+0

@UlrichEckhardt आपको ऐसा लगता है? मुझे नहीं पता मैंने इसे [इस ट्रेड में केटीसी की पोस्ट] से कॉपी किया है (http://stackoverflow.com/questions/2629421/how-to-use-boost-in-visual-studio-2010/2655683#2655683)। लेकिन मैं किसी भी चीज से खुश हूं जो मुझे त्रुटि पकड़ने में मदद करता है। मेरा प्रोजेक्ट जानना काम करता प्रतीत होता है, लेकिन मेरे पास एक चेतावनी है जिसे मैं छुटकारा नहीं पा सकता हूं, '1> c: \ python \ python34 \ \ pymath.h (22): चेतावनी C4273:' round ': असंगत डीएल लिंकेज 'तो शायद मैंने अभी भी कुछ गलत किया है। – Adelost

उत्तर

10

ऐसा लगता है कि मुझे अपनी शामिल और लाइब्रेरी निर्भरताओं में Python34/include/ और Python34/libs/ पर पथ जोड़ने की आवश्यकता है।

+1

इसके लिए धन्यवाद, इससे बहुत मदद मिली! भविष्य के आगंतुकों के लिए एक नोट, ऐसा करने का सबसे अच्छा तरीका 'PythonPATH' पर्यावरण चर के साथ है, जैसे कि [इस उत्तर] (http://stackoverflow.com/a/4855685/3524982), प्रत्येक निर्देशिका को अलग-अलग जोड़ने के बजाय। – DJMcMayhem

संबंधित मुद्दे