2014-05-20 4 views
8

Kann mir jemand sagen, wenn ich etwas falsch mache.Gebäude/einschließlich Boost.Python in VS2013

Ich bin auf Windows 7 mit Visual Studio 2013 und ich möchte in der Lage sein, ein einfaches Boost.Python-Projekt einzurichten. Ich weiß nicht, ob ich etwas falsch gemacht habe Gebäude Boost oder wenn einschließlich Boost in meinem Projekt.

Fehler

Wenn ich versuche zu #include jede boost Python-Modul, z.B. #include <boost/python/module.hpp> Ich erhalte den folgenden Fehler 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 

Gebäude

Ich habe versucht, Anweisungen zu befolgen von this SO thread in which KTC addresses Python und this Python howto from Boost, aber da beide Verbindungen etwas veraltet sind, tun die Dinge anders, und einige der Schritte scheint in neueren Versionen geändert haben von Boost musste ich einige der Instruktionen improvisieren.

Das habe ich gemacht.

  1. Die neueste Version (1.55) der Boost-Quelldatei wurde auf C:\boost_1_55_0 freigegeben.
  2. Verwendet cmd.exe, um zu C:\boost_1_55_0 zu navigieren. (Ich habe Developer Command Prompt for VS2013 nicht unter \Microsoft Visual Studio 12.0\Common7\Tools\Shortcuts gefunden verwenden. Dies sollte keinen Unterschied machen, es sollte? Boosts official guide for 1.55 keine spezifische Erwähnung gemacht hat Command Prompt for VS2013 zu verwenden.
  3. Gebrauchte bootstrap in cmd.
  4. Herausgegeben project-config.jam (erstellt von bootstrap) und C:\Python34 Pfad zu meiner Python 3.4-Installation hinzugefügt. Meine .jam Datei sah nun wie als in Projekt-Config.jam gesehen.
  5. .\b2 in cmd verwendet, um den Build-Prozess zu starten. während ich eine Menge Warnungen während der hatte gebaut (forcing value to bool 'true' or 'false' (performance warning), etc.), hat es getan Es scheint keine Fehlermeldungen zu geben, nachdem der Build fertig war.

Einschließlich

Dies ist, wie ich mein Projekt in Visual Studio erstellt.

  1. Erstellt ein neues Projekt.
  2. Code wie in hinzugefügt Testcode.
  3. Unter VC++ Verzeichnisse in Projekteigenschaften:
    1. Added C:\boost_1_55_0-Include Directories.
    2. Hinzugefügt C:\boost_1_55_0\stage\lib (der Ordner, wo ich .lib Dateien finden konnte) zu Library Directories.

Projekt Config.jam

import option ; 

using msvc ; 

option.set keep-going : false ; 

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

Testcode

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

Ich hatte dies für Python, beachten Sie die mehrere Verzeichnisse enthalten: 'Python mit : 3.5 : D: \\ Temp \\ Python \\ PCbuild \\ python.exe # cmd-or-Präfix : D: \ \ temp \\ python \\ include D: \\ temp \\ cpythonorig \\ PC : D: \\ temp \\ python \\ PCbuild; ' – stijn

+0

' mit Python: 3.4: C: \\ Python34 \\ python; '- ist das Tailing' Python 'nicht überflüssig? –

+0

@UlrichEckhardt Sie denken? Ich würde es nicht wissen. Ich kopiere es einfach von [KTC's Beitrag in diesem Profil] (http://stackoverflow.com/questions/2629421/how-to-use-boost-in-visual-studio-2010/2655683#2655683). Aber ich würde mich für alles freuen, was mir hilft, einen Fehler zu finden. Mein Projekt scheint zu funktionieren, aber ich habe eine Warnung, die ich nicht loswerden kann: '1> c: \ python \ python34 \ include \ pymath.h (22): Warnung C4273: 'round': inkonsistent dll linkage, also habe ich vielleicht noch etwas falsch gemacht. – Adelost

Antwort

10

Es scheint, dass ich nur einen Pfad zu Python34/include/ und Python34/libs/ in meinem Include und Bibliothek Abhängigkeiten hinzufügen musste.

+1

Danke dafür, es hat sehr geholfen! Ein Hinweis für zukünftige Besucher ist die Umgebungsvariable 'PYTHONPATH', wie in [diese Antwort] (http://stackoverflow.com/a/4855685/3524982), anstatt jedes Verzeichnis einzeln hinzuzufügen. – DJMcMayhem