用g ++编译FLTK

dpk*_*dpk 7 c++ fltk

我正在使用C++编写Stroustrup的原理和实践.我试图让以下程序编译.

#include <FL/Fl.H>
#include <FL/Fl_Box.H>
#include <Fl/Fl_Window.H>

int main()
{
    Fl_Window window(200, 200, "Window title");
    Fl_Box box(0,0,200,200,"Hey, I mean, Hello, World!");
    window.show();
    return Fl::run();
}
Run Code Online (Sandbox Code Playgroud)

我尝试编译它,g++ -std=c++11 trial.cpp -o trial但然后它抛出以下错误

    /tmp/ccaLRS7L.o: In function `main':
trial.cpp:(.text+0x26): undefined reference to `Fl_Window::Fl_Window(int, int, char const*)'
trial.cpp:(.text+0x50): undefined reference to `Fl_Box::Fl_Box(int, int, int, int, char const*)'
trial.cpp:(.text+0x5f): undefined reference to `Fl_Window::show()'
trial.cpp:(.text+0x64): undefined reference to `Fl::run()'
trial.cpp:(.text+0x84): undefined reference to `Fl_Window::~Fl_Window()'
trial.cpp:(.text+0xae): undefined reference to `Fl_Window::~Fl_Window()'
/tmp/ccaLRS7L.o: In function `Fl_Box::~Fl_Box()':
trial.cpp:(.text._ZN6Fl_BoxD2Ev[_ZN6Fl_BoxD5Ev]+0x13): undefined reference to `vtable for Fl_Box'
trial.cpp:(.text._ZN6Fl_BoxD2Ev[_ZN6Fl_BoxD5Ev]+0x1f): undefined reference to `Fl_Widget::~Fl_Widget()'
collect2: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

我从终端安装了FLTK 1.3版.我正在我的电脑上运行Linux mint 17.我该如何编译这段代码?

ago*_*old 12

You have to link it with the libraries:

g++ -std=c++11 trial.cpp -lfltk -o trial
Run Code Online (Sandbox Code Playgroud)

For your code this library is enough, but depending on what classes you use you might need to add: -lfltk_forms -lfltk_gl -lfltk_images also.

You can also use fltk-config as mentioned here:

g++ -std=c++11 `fltk-config --cxxflags` trial.cpp  `fltk-config --ldflags` -o trial
Run Code Online (Sandbox Code Playgroud)

Note: it is important to have the linking parameters (-l) after your code files (cpp and includes), otherwise you get compile errors.