2014-02-05 4 views
3

Я успешно получил повышение для работы в тестовом приложении, выполнив инструкции here. Теперь мне нужно создать приложение командной строки для генерации лицензий. Я унаследовал этот код, и он использует boost. Я думаю, что все правильно настроено, но когда я пытаюсь построить, я получаю Неопределенные символы для архитектуры x86_64 ошибка для всего, используя boost.Boost Xcode C++ command line Неопределенные символы для архитектуры x86_64

Я создал приложение командной строки:

enter image description here

я добавил путь для повышения:

enter image description here

Я даже пытался изменить компилятор C++ Standard Library:

enter image description here

Вот код, где я ссылающийся на библиотеку Форсирование:

#include <boost/date_time/posix_time/posix_time_io.hpp> 

namespace bg = boost::gregorian; 
namespace bp = boost::posix_time; 

Здесь находятся ошибки:

Undefined symbols for architecture x86_64: 
    "boost::program_options::to_internal(std::string const&)", referenced from: 
     std::vector<std::string, std::allocator<std::string> > boost::program_options::to_internal<std::string>(std::vector<std::string, std::allocator<std::string> > const&) in main.o 
    "boost::program_options::variables_map::variables_map()", referenced from: 
     _main in main.o 
    "boost::program_options::options_description::add_options()", referenced from: 
     _main in main.o 
    "boost::program_options::options_description::m_default_line_length", referenced from: 
     _main in main.o 
    "boost::program_options::options_description::options_description(std::string const&, unsigned int, unsigned int)", referenced from: 
     _main in main.o 
    "boost::program_options::options_description_easy_init::operator()(char const*, boost::program_options::value_semantic const*, char const*)", referenced from: 
     _main in main.o 
    "boost::program_options::options_description_easy_init::operator()(char const*, char const*)", referenced from: 
     _main in main.o 
    "boost::program_options::arg", referenced from: 
     boost::program_options::typed_value<std::string, char>::name() const in main.o 
    "boost::program_options::store(boost::program_options::basic_parsed_options<char> const&, boost::program_options::variables_map&, bool)", referenced from: 
     _main in main.o 
    "boost::program_options::detail::cmdline::set_additional_parser(boost::function1<std::pair<std::string, std::string>, std::string const&>)", referenced from: 
     boost::program_options::basic_command_line_parser<char>::extra_parser(boost::function1<std::pair<std::string, std::string>, std::string const&>) in main.o 
    "boost::program_options::detail::cmdline::set_options_description(boost::program_options::options_description const&)", referenced from: 
     boost::program_options::basic_command_line_parser<char>::options(boost::program_options::options_description const&) in main.o 
    "boost::program_options::detail::cmdline::get_canonical_option_prefix()", referenced from: 
     boost::program_options::basic_command_line_parser<char>::run() in main.o 
    "boost::program_options::detail::cmdline::run()", referenced from: 
     boost::program_options::basic_command_line_parser<char>::run() in main.o 
    "boost::program_options::detail::cmdline::style(int)", referenced from: 
     boost::program_options::basic_command_line_parser<char>::style(int) in main.o 
    "boost::program_options::detail::cmdline::cmdline(std::vector<std::string, std::allocator<std::string> > const&)", referenced from: 
     boost::program_options::basic_command_line_parser<char>::basic_command_line_parser(int, char const* const*) in main.o 
    "boost::program_options::notify(boost::program_options::variables_map&)", referenced from: 
     _main in main.o 
    "boost::program_options::validate(boost::any&, std::vector<std::string, std::allocator<std::string> > const&, std::string*, int)", referenced from: 
     boost::program_options::typed_value<std::string, char>::xparse(boost::any&, std::vector<std::string, std::allocator<std::string> > const&) const in main.o 
    "boost::program_options::operator<<(std::ostream&, boost::program_options::options_description const&)", referenced from: 
     _main in main.o 
    "boost::program_options::error_with_option_name::get_canonical_option_name() const", referenced from: 
     boost::program_options::error_with_option_name::get_option_name() const in main.o 
    "boost::program_options::value_semantic_codecvt_helper<char>::parse(boost::any&, std::vector<std::string, std::allocator<std::string> > const&, bool) const", referenced from: 
     vtable for boost::program_options::typed_value<std::string, char> in main.o 
    "typeinfo for boost::program_options::error_with_option_name", referenced from: 
     typeinfo for boost::program_options::required_option in main.o 
    "typeinfo for boost::program_options::value_semantic_codecvt_helper<char>", referenced from: 
     typeinfo for boost::program_options::typed_value<std::string, char> in main.o 
    "vtable for boost::program_options::variables_map", referenced from: 
     boost::program_options::variables_map::~variables_map() in main.o 
    NOTE: a missing vtable usually means the first non-inline virtual member function has no definition. 
    "vtable for boost::program_options::value_semantic_codecvt_helper<char>", referenced from: 
     boost::program_options::value_semantic_codecvt_helper<char>::value_semantic_codecvt_helper() in main.o 
    NOTE: a missing vtable usually means the first non-inline virtual member function has no definition. 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

ли кто-нибудь получил приложение командной строки, используя импульс, чтобы успешно строить ? Если ДА, то можете ли вы помочь?

спасибо.

+0

Вам просто нужно установить ссылку на соответствующие библиотеки ускорения. [Есть много вопросов и ответов, которые объясняют, как] (http://stackoverflow.com/search?q= [c% 2B% 2B] [boost] [xcode] + ссылка). –

+0

@JesseGood - Вы правы, но, как я уже сказал в своем посте, я получил повышение, работая в тестовом приложении. Было очень сложно заставить его работать в первый раз и потому, что было так много обручей, чтобы пройти через я не уверен, что я сделал или не сделал. И, да, есть много вопросов и ответов, и я думаю, что посмотрел на них всех. Я продолжу просмотр моей настройки и попробую другие варианты. Тем временем я все еще надеюсь, что кто-то еще сможет помочь. Спасибо. – Patricia

ответ

3

Проблема может быть вызвана для двух различных задач:

  1. Вы не связаны библиотеку propertly:

В "Build Phases" Tab, в "Link Binary с найти библиотеки" добавить : libboost_program_options.a

  1. Другая проблема заключается в том, как вы скомпилировали и связали библиотеку boost при установке библиотеки.

Если вы хотите использовать libstdC++, вы должны создать импульс, как это:

./bootstrap.sh 
./b2 cxxflags="-stdlib=libstdc++" linkflags="-stdlib=libstdc++" 
./b2 install --prefix=YOURINSTALLATIONDIRECTORY 

И затем использовать libstdC++ в Xcode.

Смежные вопросы