вопрос про boost asio - PullRequest
       1

вопрос про boost asio

0 голосов
/ 04 сентября 2010

у меня следующий код

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

#include <iostream>
#include <boost/asio.hpp>
using namespace std;
int main(int argc,char *argv[]) {

    boost::asio::io_service io;
    boost::asio::deadline_timer t(io,boost::posix_time::seconds(5));
    t.wait();
    std::cout<<" hello world\n";

    return 0;
}

но у меня следующий список ошибок

/usr/bin/make -f nbproject/Makefile-Debug.mk SUBPROJECTS= .build-conf
make[1]: Entering directory `/home/david/NetBeansProjects/Boost'
/usr/bin/make  -f nbproject/Makefile-Debug.mk dist/Debug/GNU-Linux-x86/boost
make[2]: Entering directory `/home/david/NetBeansProjects/Boost'
mkdir -p build/Debug/GNU-Linux-x86
rm -f build/Debug/GNU-Linux-x86/main.o.d
g++    -c -g -MMD -MP -MF build/Debug/GNU-Linux-x86/main.o.d -o build/Debug/GNU-Linux-x86/main.o main.cpp
mkdir -p dist/Debug/GNU-Linux-x86
g++     -o dist/Debug/GNU-Linux-x86/boost build/Debug/GNU-Linux-x86/main.o  
build/Debug/GNU-Linux-x86/main.o: In function `__static_initialization_and_destruction_0':
/usr/include/boost/system/error_code.hpp:205: undefined reference to `boost::system::get_system_category()'
/usr/include/boost/system/error_code.hpp:206: undefined reference to `boost::system::get_generic_category()'
/usr/include/boost/system/error_code.hpp:211: undefined reference to `boost::system::get_generic_category()'
/usr/include/boost/system/error_code.hpp:212: undefined reference to `boost::system::get_generic_category()'
/usr/include/boost/system/error_code.hpp:213: undefined reference to `boost::system::get_system_category()'
build/Debug/GNU-Linux-x86/main.o: In function `error_code':
/usr/include/boost/system/error_code.hpp:312: undefined reference to `boost::system::get_system_category()'
build/Debug/GNU-Linux-x86/main.o: In function `boost::asio::error::get_system_category()':
/usr/include/boost/asio/error.hpp:218: undefined reference to `boost::system::get_system_category()'
build/Debug/GNU-Linux-x86/main.o: In function `~posix_thread':
/usr/include/boost/asio/detail/posix_thread.hpp:69: undefined reference to `pthread_detach'
build/Debug/GNU-Linux-x86/main.o: In function `boost::asio::detail::posix_thread::join()':
/usr/include/boost/asio/detail/posix_thread.hpp:77: undefined reference to `pthread_join'
build/Debug/GNU-Linux-x86/main.o: In function `~posix_tss_ptr':
/usr/include/boost/asio/detail/posix_tss_ptr.hpp:61: undefined reference to `pthread_key_delete'
build/Debug/GNU-Linux-x86/main.o: In function `posix_tss_ptr':
/usr/include/boost/asio/detail/posix_tss_ptr.hpp:47: undefined reference to `pthread_key_create'
collect2: ld returned 1 exit status
make[2]: *** [dist/Debug/GNU-Linux-x86/boost] Error 1
make[2]: Leaving directory `/home/david/NetBeansProjects/Boost'
make[1]: *** [.build-conf] Error 2
make[1]: Leaving directory `/home/david/NetBeansProjects/Boost'
make: *** [.build-impl] Error 2
BUILD FAILED (exit value 2, total time: 5s)

просьбы помочь тому, что счастливо?

Ответы [ 4 ]

6 голосов
/ 04 сентября 2010

Проблема не в вашем коде, проблема в настройках компилятора (собственно компоновщика). Вам нужно связаться с библиотеками Boost.System и pthread. Обычно это делается путем передачи -lboost_system, -lpthread опциям компоновщика в вашем Makefile или любимой IDE.

2 голосов
/ 04 сентября 2010

Вам необходимо связаться с библиотекой Boost.System: -lboost_system Также вам нужно связать с pthreads lib: -lpthread

0 голосов
/ 16 мая 2011

Для последующего обращения к кому-либо с такой же проблемой: В netbeans щелкните правой кнопкой мыши проект -> Свойства -> Компилятор C ++, и внизу есть опция для передачи «Дополнительные аргументы» в опции -lboost_system. Примечание: -lboost_system должна быть определена, иначе вы получите ошибки

0 голосов
/ 14 декабря 2010

Вам нужно щелкнуть правой кнопкой мыши корневую папку вашего проекта и выбрать свойства.

Оттуда вам нужно выбрать «Linker» в левой панели, и там есть поле «Libraries». Вам нужно просматривать вашу систему, пока не найдете двоичный файл libboost_system.a. Обычно по адресу /usr/local/lib.

Если вы не можете найти нужный файл, возможно, вы еще не скомпилировали исходный код для этих библиотек. Ознакомьтесь с http://ubuntuforums.org/showthread.php?t=1180792 или с документацией по началу работы, включенной в пакет boost tar.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...