如何在VS2008下使用FLTK
在VS2008下使用FLTK(VS2008 Service Pack 1须已被安装。)
一、 编译FLTK(两种方法)
方法1:
①用VS2008打开fltk.sln(文件在...\fltk-1.3.xxxx\ide\VisualC2008\fltk.sln)
②在解决方案配置框选择debug或release。
③在VS2008左边解决方案资源管理器下右击demo文件,选择“设为启动项目”
④按F7
方法2(推荐使用这个方法):
使用Cmake。从http://www.cmake.org/下载并安装Cmake。步骤见:
http://blog.163.com/jacky_ling0/blog/static/137392571201010484049654/
我编译成功的64位库链接地址:https://files.cnblogs.com/jiahu-Blog/FLTK%E5%B7%B2%E7%BC%96%E8%AF%91.rar
二、安装FLTK:
VS默认的库与头文件目录为:
C:\Program Files\Microsoft Visual Studio 9.0\VC\
如果你更改了安装目录,所需目录一般在你的安装目录下可以找到这。找到VC目录之后的操作与下面相同。
将FLTK的头文件与库文件复制到对应的文件夹下:
1、复制所有的 .lib 文件到VC库目录(即....\VC\lib\)。
2、复制整个FL目录到VC的include目录下(即....\VC\include\)。
3、复制fluid.exe到VC的bin目录下(....\VC\bin\)。
(不建议使用动态.dll库,因为可能需要安装。最好使用.lib库)
三、创建一个新的项目:
在Visual C++下选择“常规”,在左边选择“空项目”或者建立win32控制台程序(空项目)。然后添加一个 *.cpp 文件。
右击项目名,选择属性→C/C++→预处理器→(将 WIN32;NDEBUG;_CONSOLE 复制进“预处理器定义”)
右击项目名,选择属性→链接器→输入→将fltk*.lib的目录写入附加的依赖项(例如:D:\AppInstall\VS2008\VC\lib\fltk* 加星号的目的是将所有FLTK库都导入)
测试代码:
#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Button.H>
#include <FL/Fl_Input.H>
#include <FL/Fl_Output.H>
#include <cstdlib> //for exit(0)
#include <string.h>
using namespace std;
void copy_cb( Fl_Widget* , void* ); //function prototypes
void close_cb( Fl_Widget* , void* );
void make_window();
int main() {
make_window();
return Fl::run();
}
void make_window() {
Fl_Window* win= new Fl_Window(300,200, "Testing 2");
win->begin();
Fl_Button* copy = new Fl_Button( 10, 150, 70, 30, "C&opy"); //child 0 : 1st widget
Fl_Button* close = new Fl_Button(100, 150, 70, 30, "&Quit"); //child 1 : 2nd widget
Fl_Input* inp = new Fl_Input(50, 50, 140, 30, "In"); //child 2 : 3rd widget
Fl_Output* out = new Fl_Output(50, 100, 140, 30, "Out"); //child 3 : 4th widget
win->end();
copy->callback( copy_cb );
close->callback( close_cb );
win->show();
}
void copy_cb( Fl_Widget* o , void* ) {
Fl_Button* b=(Fl_Button*)o;
Fl_Input* iw = (Fl_Input*) b -> parent() -> child(2);
Fl_Output* ow = (Fl_Output*) b -> parent() -> child(3);
ow->value( iw->value() );
}
void close_cb( Fl_Widget* o, void*) {
exit(0);
}/////////////////////////////////////////////////