2014-05-20 16 views
8

Qualcuno può dirmi se sto facendo qualcosa di sbagliato.Edificio/incluso Boost.Python in VS2013

Sono su Windows 7 utilizzando Visual Studio 2013 e mi piacerebbe essere in grado di impostare un semplice progetto Boost.Python. Non so se ho fatto qualcosa di sbagliato potenziamento o incluso boost nel mio progetto.

errore

Quando provo a #include qualsiasi modulo python spinta, per esempio #include <boost/python/module.hpp> Ottengo il seguente errore in 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 

costruzione

ho cercato di seguire le istruzioni da this SO thread in which KTC addresses Python, e this Python howto from Boost, ma dal momento che entrambi i collegamenti sono po 'datato, stanno facendo le cose in modo diverso, e alcuni dei passaggi sembra essere cambiato nelle versioni più recenti di Boost, ho dovuto improvvisare su alcune delle istruzioni.

Questo è quello che ho fatto.

  1. Non decompresso l'ultima versione (1.55) del file di origine Boost su C:\boost_1_55_0.
  2. Utilizzato cmd.exe per raggiungere C:\boost_1_55_0. (Non ho usare Developer Command Prompt for VS2013 trovati sotto \Microsoft Visual Studio 12.0\Common7\Tools\Shortcuts. Questo non dovrebbe fare alcuna differenza, dovrebbe? Boosts official guide for 1.55 non ha fatto alcuna menzione specifica di utilizzare Command Prompt for VS2013.
  3. Usato bootstrap cmd.
  4. A cura project-config.jam (creato da bootstrap) e il percorso aggiunto alla mia Python 3.4 installazione C:\Python34. il mio file .jam ora sembrava come si vede nella Project-Config.jam.
  5. Usato .\b2 in cmd per avviare il processo di compilazione. Mentre ho avuto un sacco di avvertimenti durante la costruito (forcing value to bool 'true' or 'false' (performance warning), ecc.), ha fatto non sembra che ci siano messaggi di errore dopo che il costruito è finito.

Compreso

Ecco come ho creato il mio progetto in Visual Studio.

  1. Creato un nuovo progetto.
  2. Codice aggiunto come visto in Codice di prova.
  3. Sotto Directory di VC++ in Proprietà del progetto:
    1. Aggiunto C:\boost_1_55_0-Include Directories.
    2. Aggiunto C:\boost_1_55_0\stage\lib (la cartella in cui sono stati trovati i file .lib) a Library Directories.

Project-Config.jam

import option ; 

using msvc ; 

option.set keep-going : false ; 

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

codice di prova

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

Ho avuto questo per Python, nota il multiplo includere le directory: 'utilizzando python : 3,5 : D: \\ Temp \\ pitone \\ PCbuild \\ python.exe # cmd-o-prefix : D: \ \ temp \\ python \\ include D: \\ temp \\ cpythonorig \\ PC : D: \\ temp \\ python \\ PCbuild; ' – stijn

+0

' utilizzando python: 3.4: C: \\ Python34 \\ python; '- non è il superfluo tailing' \\ python'? –

+0

@UlrichEckhardt La pensi così? Non lo saprei L'ho appena copiato da [post di KTC in questo battistrada] (http://stackoverflow.com/questions/2629421/how-to-use-boost-in-visual-studio-2010/2655683#2655683). Ma sarei felice per tutto ciò che mi aiuta a cogliere un errore. Il mio progetto sembra funzionare, ma ho un avvertimento di cui non posso sbarazzarmi, '1> c: \ python \ python34 \ include \ pymath.h (22): warning C4273: 'round': inconsistente collegamento dll quindi forse ho ancora fatto qualcosa di sbagliato. – Adelost

risposta

10

Sembra che sia stato necessario aggiungere un percorso a Python34/include/ e Python34/libs/ nelle dipendenze Includi e Libreria.

+1

Grazie per quello, ha aiutato molto! Una nota per i futuri visitatori, il modo migliore per farlo è con la variabile di ambiente 'PYTHONPATH', come in [questa risposta] (http://stackoverflow.com/a/4855685/3524982), piuttosto che aggiungere ogni directory singolarmente. – DJMcMayhem