2010-03-03 39 views
6

Tôi đã cài đặt wxWidgets-2.8.10 hướng dẫn sau đây từ trang này: http://wiki.wxwidgets.org/Compiling_and_getting_startedwxWidgets liên kết vấn đề

Libraries thư mục:

 
[email protected]:/usr/local/lib$ ls | grep wx 
libwx_base-2.8.a 
libwx_base_net-2.8.a 
libwx_base_xml-2.8.a 
libwx_gtk2_adv-2.8.a 
libwx_gtk2_aui-2.8.a 
libwx_gtk2_core-2.8.a 
libwx_gtk2_html-2.8.a 
libwx_gtk2_qa-2.8.a 
libwx_gtk2_richtext-2.8.a 
libwx_gtk2_xrc-2.8.a 
libwxtiff-2.8.a 
wx 

Sau đó, tôi tạo ra tập tin widgetTest.cpp và điền nó với mã này: http://www.wxwidgets.org/docs/tutorials/hworld.txt

Cố gắng xây dựng nó, tôi có rất nhiều lỗi liên kết:

 
[email protected]:~$ cd /home/alex/Tmp 
[email protected]:~/Tmp$ g++ `wx-config --cppflags` `wx-config --libs` widgetTest.cpp 
/tmp/ccnPCAw5.o: In function `wxCreateApp()': 
widgetTest.cpp:(.text+0x2d): undefined reference to `wxAppConsole::CheckBuildOptions(char const*, char const*)' 
/tmp/ccnPCAw5.o: In function `main': 
... 
widgetTest.cpp:(.text._ZN20wxThreadHelperThreadD0Ev[wxThreadHelperThread::~wxThreadHelperThread()]+0x16): undefined reference to `wxThread::~wxThread()' 
collect2: ld returned 1 exit status 

thông tin bổ sung:

 
[email protected]:~$ wx-config --cppflags 
-I/usr/local/lib/wx/include/gtk2-ansi-release-static-2.8 -I/usr/local/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ 
[email protected]:~$ wx-config --libs 
-L/usr/local/lib -pthread /usr/local/lib/libwx_gtk2_richtext-2.8.a /usr/local/lib/libwx_gtk2_aui-2.8.a /usr/local/lib/libwx_gtk2_xrc-2.8.a /usr/local/lib/libwx_gtk2_qa-2.8.a /usr/local/lib/libwx_gtk2_html-2.8.a /usr/local/lib/libwx_gtk2_adv-2.8.a /usr/local/lib/libwx_gtk2_core-2.8.a /usr/local/lib/libwx_base_xml-2.8.a /usr/local/lib/libwx_base_net-2.8.a /usr/local/lib/libwx_base-2.8.a -pthread -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lgio-2.0 -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0 -lXinerama -lSM -lpng -ljpeg -lexpat -lwxtiff-2.8 -lz -ldl -lm 
[email protected]:~$ 

Điều gì là sai?

+0

g ++ 'wx-config --cppflags' widgetTest.cpp' wx-config --libs' Đã hoạt động! Làm thế nào tôi có thể áp dụng giải pháp này cho môi trường làm việc của tôi - Eclipse CDT. Tôi thêm 'wx-config --cppflags' vào các thiết lập trình biên dịch GCC, và' wx-config --libs' thành các thiết lập trình liên kết, và nhận các lỗi liên kết. –

Trả lời

9

Điều này có hữu ích không?

g++ `wx-config --cppflags` widgetTest.cpp `wx-config --libs` 

Đôi khi đặt thư viện sau nguồn là bắt buộc.

+0

Có, nó là cần thiết bất cứ khi nào bạn sử dụng liên kết tĩnh (như OP không). Và là một hệ quả trực tiếp của thuật toán tìm kiếm được sử dụng bởi các trình liên kết Unix truyền thống, nó không dành riêng cho cả wxWidgets lẫn Linux. –

+0

Di chuyển các thư viện đến cùng đã giúp, xây dựng dòng lệnh thành công, cảm ơn bạn! Bây giờ tôi trở lại môi trường làm việc của mình: CDT Eclipse. Làm thế nào để tái tạo giải pháp này ở đây? Trong các thiết lập Compiler, tôi có các cờ khác: 'wx-config --cppflags', trong các thiết lập của Linker, tôi có các cờ khác' wx-config --libs'. Xây dựng lỗi trình liên kết kết quả. –

+1

Để tham khảo: Trong CDT Eclipse, vấn đề được giải quyết bằng cách thay đổi mẫu dòng liên kết và dòng lệnh: FLAGS được chuyển đến cuối. –

Các vấn đề liên quan