2012-06-13 4 views
6

Passi: 1.
spinta sudo port
Il file spinta installato in/opt/local/boost, file di libreria sono in/opt/local/lib

2. uso XCode per creare C++ progetto
Come faccio a costruire programma semplice spinta su Mac OS (Lion)

#include <iostream> 
#include <boost/asio.hpp> 
int main() { 
    return 0; 
} 


3. set XCode per scoprire spinta
in "Build Settings" -> "HEADER_SEARCH_PATHS"
in entrambi i percorsi di debug e release aggiungi/opt/local/include

4. "Impostazioni di compilazione" -> "LIBRARY_SEARCH_PATHS" -> aggiungi/opt/local/lib sia per il debug che per il rilascio.

5. build program and failed.
Messaggi di errore,

Undefined symbols for architecture x86_64: 
    "boost::system::generic_category()", referenced from: 
    ___cxx_global_var_init1 in main.o 
    ___cxx_global_var_init2 in main.o 
    "boost::system::system_category()", referenced from: 
    ___cxx_global_var_init3 in main.o 
    boost::asio::error::get_system_category() in main.o 
    "boost::asio::error::get_netdb_category()", referenced from: 
    ___cxx_global_var_init5 in main.o <br> 
    "boost::asio::error::get_addrinfo_category()", referenced from: 
    ___cxx_global_var_init6 in main.o <br> 
    "boost::asio::error::get_misc_category()", referenced from: 
    ___cxx_global_var_init7 in main.o <br> 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

Mi sbaglio nella procedura?

+0

Questo sembra essere più come una domanda su come linkare correttamente una libreria in un progetto. Il percorso non è sufficiente, ma è necessario specificare anche la libreria. – lpapp

risposta

8

è necessario collegare con Boost.System, che dovrebbe essere in /opt/local/lib/libboost_system (con un certo suffisso, che dipende da spinta come hai costruito)

Aggiungi che al progetto Xcode.

+0

Questo è corretto nonostante la mancanza di accettazione. L'ho distanziato tra i documenti, ma è abbastanza sicuro che è [proprio qui] (http://www.boost.org/doc/libs/1_51_0/doc/html/boost_asio/using.html#boost_asio.using.dependencies). –

+0

Come si aggiunge qualcosa in/opt al tuo progetto XCode?/opt è una cartella invisibile. –

+0

@WarrenP Trascino/opt/cartella in lefeside del finder come collegamento. Inoltre, mostro tutti i file nascosti ma non posso mostrare nel pannello di collegamento della libreria Xcode. – CCC

4
  1. selezionare nella sezione del tuo "target"
  2. in "Collegamento binario con le librerie" sotto "costruire fasi" scheda, aggiungere libreria Boost.
  3. se installare tramite MacPort, la spinta sarà a /opt/local/lib,
    se installare tramite birra, la spinta sarà a /usr/local/Cellar/boost,
    se costruire da soli, sarà a /usr/local/lib by default o yourBoostLib/stage/lib