wxWidgets链接问题

6
我按照这个页面的说明,安装了 wxWidgets-2.8.10: http://wiki.wxwidgets.org/Compiling_and_getting_started 库目录如下:
alex@alex-linux:/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
然后我创建了文件 widgetTest.cpp,并将其填充为以下代码: http://www.wxwidgets.org/docs/tutorials/hworld.txt 尝试构建它时,我遇到了很多链接器错误:
alex@alex-linux:~$ cd /home/alex/Tmp
alex@alex-linux:~/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
附加信息:
alex@alex-linux:~$ 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__
alex@alex-linux:~$ 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 
alex@alex-linux:~$ 

这段代码中有什么问题?


1
g++ wx-config --cppflags widgetTest.cpp wx-config --libs 它起作用了!我如何将此解决方案应用到我的工作环境 - Eclipse CDT。我将wx-config --cppflags添加到GCC编译器设置中,将wx-config --libs添加到链接器设置中,但是出现了链接器错误。 - Alex F
1个回答

10

这个有帮助吗?

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

有时需要将库文件放在源代码之后。


是的,每当您使用静态链接(正如OP所做的那样)时,这是必需的。由于传统Unix链接器使用的搜索算法的直接结果,它既不特定于wxWidgets也不特定于Linux。 - VZ.
将库移动到末尾有所帮助,命令行构建成功,谢谢!现在我回到我的工作环境:Eclipse CDT。如何在这里复制这个解决方案?在编译器设置中,我有其他标志:wx-config --cppflags,在链接器设置中,我有其他标志wx-config --libs。构建结果出现链接器错误。 - Alex F
1
参考:在Eclipse CDT中,通过更改链接器命令行模式来解决问题:FLAGS被移动到末尾。 - Alex F

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接