在Ubuntu 12.04(amd64)上与wxWidget示例链接问题

时间:2013-09-25 22:47:50

标签: c++ linux ubuntu wxwidgets

将链接wxWidget示例应用程序(http://www.wxwidgets.org/docs/tutorials/hello.htm)与存储在main.cpp中时出现问题。我尝试使用以下方法编译和链接它:

g++ `wx-config --cxxflags --libs` main.cpp 

我得到的输出如下:

/tmp/ccFHWUaX.o: In function `wxCreateApp()':
main.cpp:(.text+0x31): undefined reference to `wxAppConsole::CheckBuildOptions(char const*, char const*)'
/tmp/ccFHWUaX.o: In function `main':
main.cpp:(.text+0x91): undefined reference to `wxEntry(int&, char**)'
/tmp/ccFHWUaX.o: In function `MyFrame::MyFrame(wxString const&, wxPoint const&, wxSize const&)':
main.cpp:(.text+0x1d2): undefined reference to `wxFrameNameStr'
main.cpp:(.text+0x267): undefined reference to `wxEmptyString'
main.cpp:(.text+0x2ea): undefined reference to `wxEmptyString'
main.cpp:(.text+0x366): undefined reference to `wxMenuBar::wxMenuBar()'
main.cpp:(.text+0x3d1): undefined reference to `wxFrameBase::SetMenuBar(wxMenuBar*)'
main.cpp:(.text+0x3da): undefined reference to `wxStatusLineNameStr'
main.cpp:(.text+0x407): undefined reference to `wxFrame::CreateStatusBar(int, long, int, wxString const&)'
main.cpp:(.text+0x44f): undefined reference to `wxFrameBase::SetStatusText(wxString const&, int)'
main.cpp:(.text+0x533): undefined reference to `wxFrame::~wxFrame()'
(and many lines more...)

使用ubuntu存储库安装WxWidgets-2.8,其库位于/ usr / lib / x86_64-linux-gnu。我还尝试使用:

构建指定库路径
-L/usr/lib/x86_64-linux-gnu/

但是,这不会改变输出。我把问题归咎于多重问题,但实际上只是因为我不知道它是如何运作的。

有人能告诉我如何正确构建样本吗?

谢谢 迈克尔

1 个答案:

答案 0 :(得分:3)

使用静态链接时,库必须始终使用它们中的符号来 ,否则它们会被链接器忽略,因为它们当时不需要它们首先看到他们。因此us2012是正确的,您需要将wx-config部分放在源文件之后。

您也可以使用共享的wxWidgets库,然后顺序无关紧要。但无论如何,使用正确的顺序仍然是一个好习惯,这对于静态和共享库都有效。