将链接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/
但是,这不会改变输出。我把问题归咎于多重问题,但实际上只是因为我不知道它是如何运作的。
有人能告诉我如何正确构建样本吗?
谢谢 迈克尔
答案 0 :(得分:3)
使用静态链接时,库必须始终使用它们中的符号来 ,否则它们会被链接器忽略,因为它们当时不需要它们首先看到他们。因此us2012是正确的,您需要将wx-config
部分放在源文件之后。
您也可以使用共享的wxWidgets库,然后顺序无关紧要。但无论如何,使用正确的顺序仍然是一个好习惯,这对于静态和共享库都有效。