2011-04-18 26 views
8

tôi đã cài đặt thư viện tăng với bjam cài đặt, nhưng khi tôi đang biên soạn chương trình:Boost.Asio lắp đặt vấn đề

#include boost/asio.hpp 

int main() 
{ 
return 0; 
} 

lỗi như vậy xảy ra:

/tmp/ccVR3eeF.o: In function `__static_initialization_and_destruction_0(int, int)': 
sda.cpp:(.text+0x52): undefined reference to `boost::system::generic_category()' 
sda.cpp:(.text+0x5e): undefined reference to `boost::system::generic_category()' 
sda.cpp:(.text+0x6a): undefined reference to `boost::system::system_category()' 
/tmp/ccVR3eeF.o: In function `boost::asio::error::get_system_category()': 
sda.cpp:(.text._ZN5boost4asio5error19get_system_categoryEv[boost::asio::error::get_system_category()]+0x5): undefined reference to `boost::system::system_category()' 
/tmp/ccVR3eeF.o: In function `boost::asio::detail::posix_tss_ptr_create(unsigned int&)': 
sda.cpp:(.text._ZN5boost4asio6detail20posix_tss_ptr_createERj[boost::asio::detail::posix_tss_ptr_create(unsigned int&)]+0x19): undefined reference to `pthread_key_create' 
/tmp/ccVR3eeF.o: In function `boost::asio::detail::posix_tss_ptr<boost::asio::detail::call_stack<boost::asio::detail::task_io_service>::context>::~posix_tss_ptr()': 
sda.cpp:(.text._ZN5boost4asio6detail13posix_tss_ptrINS1_10call_stackINS1_15task_io_serviceEE7contextEED2Ev[boost::asio::detail::posix_tss_ptr<boost::asio::detail::call_stack<boost::asio::detail::task_io_service>::context>::~posix_tss_ptr()]+0x15): undefined reference to `pthread_key_delete' 
/tmp/ccVR3eeF.o: In function `boost::asio::detail::posix_tss_ptr<boost::asio::detail::call_stack<boost::asio::detail::strand_service::strand_impl>::context>::~posix_tss_ptr()': 
sda.cpp:(.text._ZN5boost4asio6detail13posix_tss_ptrINS1_10call_stackINS1_14strand_service11strand_implEE7contextEED2Ev[boost::asio::detail::posix_tss_ptr<boost::asio::detail::call_stack<boost::asio::detail::strand_service::strand_impl>::context>::~posix_tss_ptr()]+0x15): undefined reference to `pthread_key_delete' 
collect2: ld returned 1 exit status 

những gì tôi phải làm ? làm thế nào tôi có thể xây dựng những thư viện?

Trả lời

7

Boost.Asio cũng yêu cầu thư viện Boost.System; bạn cần phải thêm -lboost_system vào dòng lệnh trình liên kết của bạn.

Khi bạn thêm các tính năng vào chương trình của mình, bạn cũng có thể cần các phần khác của Boost, như Boost.Thread, Boost.Date_Time, v.v. Xem http://www.boost.org/doc/libs/1_46_1/doc/html/boost_asio/using.html để biết chi tiết.

0

Tôi sử dụng netbeans để tôi nhập '-lboost_system' vào các dòng bổ sung! Đó là một sai lầm.

Các dòng bổ sung được đặt trước đối tượng và do đó tôi có cùng lỗi. Sau đó, tôi phát hiện ra nếu tôi chạy từ giao diện điều khiển và đặt -lboost_system tại VERY END tất cả mọi thứ hoạt động greate. Cuối cùng tôi tìm thấy đúng nơi để đặt trong netbeans (trong thư viện không lệnh phần) và lĩnh vực đó cho biết thêm vào cuối!

Hãy nhớ rằng, không chỉ tính nếu bạn có thư viện theo lệnh! CÁC VỊ TRÍ không đếm :) Hãy nhớ để đặt thư viện ở cuối và xác minh nó :)

làm việc lớn:

g++.exe -D_WIN32_WINNT=0x0501 -D__USE_W32_SOCKETS -c -g -MMD -MP -MF async_client.o.d -o async_client.o async_client.cpp 
g++.exe -D_WIN32_WINNT=0x0501 -D__USE_W32_SOCKETS -o async_client async_client.o -lws2_32 -lboost_chrono -lboost_system -lboost_thread 

Không làm việc:

g++.exe -D_WIN32_WINNT=0x0501 -D__USE_W32_SOCKETS -c -g -MMD -MP -MF async_client.o.d -o async_client.o async_client.cpp 
g++.exe -D_WIN32_WINNT=0x0501 -D__USE_W32_SOCKETS -lws2_32 -lboost_chrono -lboost_system -lboost_thread -o async_client async_client.o 
+0

Đây có phải là câu hỏi ??? – Michael

+1

Câu trả lời này khó đọc. Tôi không đủ quen thuộc để tự mình chỉnh sửa nó. –