mi sono imbattuto in errori simili durante il tentativo di utilizzare Boost.Python per accedere package Python Anaconda dal C++. Lasciatemi iniziare dicendo che la mia impressione personale delle librerie C++ Boost è che sono una grande idea con documentazione incompleta. C'è una tonnellata di documentazione su boost.org, ma sembra invariabilmente lasciare fuori dettagli critici che gli autori sembrano considerare troppo banali per preoccuparsi di menzionarli. Ma lasciami scendere dal mio soapbox ...
L'impulso in corso per me per [speriamo, alla fine] capire come far funzionare Boost.Python sul mio sistema è che ci sono così tanti grandi pacchetti scientifici Python [ SymPy, Numpy, SciPy, matplotlib, ecc. Inclusi nella distribuzione di Anaconda e sarebbe davvero fantastico accedervi da progetti C++ creati con Qt Creator. E i documenti Boost sembrano suggerire che Boost.Python dovrebbe farlo per me. Ahimè, quei documenti sembrano tralasciare dettagli critici che gli autori sembrano considerare troppo banali per preoccuparsi di menzionare ...
Ad ogni modo, inizialmente, ho ricevuto un errore di compilazione che indica che python.h non è stato trovato. Mi sono liberato di quel con l'aggiunta di queste due affermazioni in un file .pro del mio progetto Qt Creator, che raccontano qmake dove Boost installato i propri file di inclusione e dove Anaconda installato il suo file Python.h sul mio sistema:
INCLUDEPATH += C:\boost_1_55_0
INCLUDEPATH += C:\Anaconda\include
Dopo di che , Ho ricevuto un errore LNK1104 che indica che "python27.lib" non è stato trovato. Mi sono sbarazzato di questo aggiungendo queste due dichiarazioni al mio file .pro. Il primo dice a qmake dove trovare il file python27.lib di Anaconda. Il secondo dice qmake dove trovare la spinta.binario python:
LIBS += "C:/Anaconda/libs"
LIBS += "C:/boost_1_55_0/stage/lib/libboost_python-vc110-mt-gd-1_55.lib"
Ma, questo è il massimo che ho ottenuto finora. Ora ricevo un errore che indica che non è possibile aprire il file 'C: /Anaconda/libs.obj' per il quale non ho ancora trovato una soluzione. L'errore, ovviamente, è causato da quel file non esistente. La sfida è scoprire perché viene ricercata e dove trovarla.
Cosa intendi con "esegui i moduli Python in C++"? Per fare ciò, devi [incorporare un interprete Python] (http://docs.python.org/2/extending/embedding.html). Solo "#include" non lo fa. –
abarnert
Nel frattempo, hai letto [Creazione di estensioni C e C++ su Windows] (http://docs.python.org/2/extending/windows.html) e [Requisiti di collegamento] (http://docs.python.org/ 2/extending/embedding.html # linking-requirements) (per l'incorporamento)? Intendi incorporare il tuo interprete in modo statico o dinamico? Dove hai preso l'interprete che stai cercando di incorporare? – abarnert
Probabilmente è più semplice costruire le librerie Python dal codice sorgente di Python. – Aya