2014-05-20 12 views
8

Czy ktoś może mi powiedzieć, czy robię coś złego.Budynek/w tym Boost.Python w VS2013

Jestem na Windows 7 przy użyciu Visual Studio 2013 i chciałbym móc skonfigurować prosty projekt Boost.Python. Nie wiem, czy coś złego zrobiłem. Budowanie doładowania lub kiedy w tym doładowanie w moim projekcie.

Błąd

Kiedy próbuję #include dowolny moduł Pythona doładowania, np #include <boost/python/module.hpp> Otrzymuję następujący błąd w programie 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 

budynku

starałem się postępować zgodnie z instrukcjami z this SO thread in which KTC addresses Python i this Python howto from Boost, ale ponieważ obie linki są nieco przestarzałe, robią to inaczej, a niektóre z etapów wydaje się zmieniło w nowszych wersjach of Boost, musiałem improwizować na niektórych instrukcjach.

Oto, co zrobiłem.

  1. Rozpakowano najnowszą wersję (1.55) pliku źródłowego boost do C:\boost_1_55_0.
  2. Używane cmd.exe do nawigacji do C:\boost_1_55_0. (Nie używać Developer Command Prompt for VS2013 znaleźć pod \Microsoft Visual Studio 12.0\Common7\Tools\Shortcuts. Nie powinno to żadnej różnicy, należy go? Boosts official guide for 1.55 nie miało żadnego wyraźnego wspominania o użyciu Command Prompt for VS2013.
  3. Używane bootstrap w cmd.
  4. redakcją project-config.jam (utworzony przez bootstrap) i dodano ścieżkę do mojej instalacji C:\Python34 Python 3.4. Mój plik .jam teraz wyglądał jak widać w Project-Config.jam.
  5. Używane .\b2 w cmd, aby rozpocząć proces kompilacji. Chociaż miałem dużo ostrzeżeń podczas zbudowany (forcing value to bool 'true' or 'false' (performance warning), itp.), tak się stało nie wydają się być komunikatami o błędach po zakończeniu budowy.

Łącznie

ten sposób tworzę projekt w Visual Studio.

  1. Utworzono nowy projekt.
  2. Dodany kod widoczny w Kod testowy.
  3. podkatalogi VC++ we właściwościach projektu:
    1. Dodany C:\boost_1_55_0 do Include Directories.
    2. Dodano C:\boost_1_55_0\stage\lib (folder, w którym mogłem znaleźć pliki .lib) na Library Directories.

Project-Config.jam

import option ; 

using msvc ; 

option.set keep-going : false ; 

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

kod testowy

Od: 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

miałem to dla pytona, zwróć uwagę na to wielokrotność katalogów: 'Pythonie : 3.5 : D: \\ \\ \\ temp pyton PCbuild \\ python.exe # cmd-lub-prefix : D: \ \ temp \\ \\ pyton obejmują D: temperatura \\ \\ \\ cpythonorig PC D: \\ \\ temp pytona \\ PCbuild; ' – stijn

+0

' pomocą pytona: 3.4 C: \\ Python34 \\ języka; '- czy zbędny jest" tailing "\\ python'? –

+0

@UlrichEckhardt Tak myślisz? Nie wiedziałbym. Właśnie skopiowałeś z postu [KTC w tej bieżnika] (http://stackoverflow.com/questions/2629421/how-to-use-boost-in-visual-studio-2010/2655683#2655683). Ale byłbym szczęśliwy z wszystkiego, co pomaga mi złapać błąd. Mój projekt wydaje się działać jako know, ale mam jedno ostrzeżenie nie mogę pozbyć, '1> c: \ python \ python34 \ include \ pymath.h (22): Ostrzeżenie C4273: 'okrągły': niespójne dll linkage "więc być może nadal zrobiłem coś złego. – Adelost

Odpowiedz

10

Wydaje mi po prostu potrzebne, aby dodać ścieżkę do Python34/include/ i Python34/libs/ w moich zawierać i biblioteki zależności.

+1

Dzięki za to, bardzo pomogło! Uwaga dla przyszłych użytkowników, najlepszym sposobem na to jest ze zmienną 'PYTHONPATH' środowiska, jak w tej odpowiedzi [] (http://stackoverflow.com/a/4855685/3524982), zamiast dodawania każdego katalogu osobno. – DJMcMayhem

Powiązane problemy