环境介绍

系统:win10 64位

IDE:VS 2017 Community

FLTK版本:1.3.4-2

下载FLTK

截止到本文编写,FLTK的最新稳定版本是1.3.4-2。我们从官网(www.fltk.org)下载到它的源码包。如下图:

我把它解压到D:\FLTK目录下:

编译FLTK

FLTK是跨平台的C++ GUI库,以源代码形式发布,因此在使用前需要编译。FLTK官方推荐在Windows系统下,将FLTK编译成静态链接库的形式使用。在解压后的目录下找到:ide目录,里面提供了预先配置好的VS和Xcode项目。

在README文件中发现如下内容:

ide/VisualC6         Microsoft Visual C++ 6 and 2005 (2)
ide/VisualC2008   Microsoft Visual C++ 2008
ide/VisualC2010   Microsoft Visual C++ 2010 and later (3)
ide/Xcode4           Apple Xcode 3.x and up (see ../README.OSX.txt)

因此我们选择VisualC2010目录,并双击里面的 “fltk.sln” 就可以用VS2017打开解决方案。打开时会弹出如下窗口,意思是将项目更新到最新的VS兼容版本,点击确认即可。

打开解决方案后,在左边的项目列表中找到demo项目,右键之,选择【设为启动项目】,如下图:

将项目配置为Debug模式下的Win32开发平台(默认就是这样,一般无需改动)

按【F7】或者点击菜单栏的【生成】->【生成解决方案】开始编译,大约3~5分钟就好。

一切顺利会得到如下图的编译输出信息

然后将Debug切换为Release,其它不变,再从新生成解决方案。 一切顺利后,我们【Ctrl + F5】运行demo项目,会看到一个官方的演示程序(注:Debug模式运行会带一个命令行窗口,Release模式则不带)。如下图:

配置开发环境

现在我们可以关闭VS2017了。

前面2次生成解决方案会编译形成14个.lib后缀的静态库文件,他们位于FLTK的lib目录下。文件名称以d结尾的表示是debug模式下编译形成的,不带d的则是release模式下形成的,例如fltkd.lib和fltk.lib。

打开VS2017的VC++ 目录,我的机器上是:C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023

第一步:将14个.lib文件拷贝到上图VC++的lib目录下的x86目录下。拷贝后如下图:

第二步:将FLTK目录下的FL文件夹拷贝VC++的的include目录下。拷贝后如下图:

新建一个FLTK应用程序

使用VS2017新建一个VC++空项目名为hello,如下图:

向项目中添加一个main.cpp源文件,使用下面的测试代码。

#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Box.H>
int main(int argc, char *argv[])
{
Fl_Window *window;
Fl_Box *box;
window = new Fl_Window(, , "First App!");
box = new Fl_Box(, , , , "Hello World,世界你好");
box->box(FL_FLAT_BOX);
box->labelsize(); //设置字体大小
box->labelfont(FL_BOLD + FL_ITALIC); //设置字体
box->labeltype(FL_SHADOW_LABEL); //设置label的类型
window->end();
window->show(argc, argv);
return Fl::run();
}

先不急着运行,要对项目进行如下2部分配置。右键项目名【hello】->【属性】可以打开下面的配置窗口。

下图演示了对项目的Debug模式进行配置的细节。当要发布程序的release版本时,同样需要对Release模式进行配置再编译。二者的区别在于,【附加依赖项】中,输入的lib静态库不同,Debug模式使用名称带d的库,Release模式则使用不带d的库。

FLTK源代码中,会根据平台相关宏来进行条件编译,从而实现跨平台的特性,Windows平台对应的宏就是WIN32,因此我们需要预定义这个宏。

添加依赖库。Comctl32.lib是必须的,然后就是FLTK相关的静态库。FLTK相关的静态库有7对,应用程序使用了某些功能,就添加对应的FLTK静态库,fltkd.lib(Release模式下是fltk.lib)是必须的。

运行效果:

为什么程序总是带命令行窗口?

windows系统下,可以设置一个程序对应的console运行于前台还是后台。如果你使用的是gcc(例如MingW,或者Cygwin),那么你通过使用链接器参数 "-mwindows" 来让console运行在后台(隐藏命令行窗口),使用"-mconsole"让console运行在前台(显示命令行窗口)。如果你使用MS VC++编译器,那么你通过设置连接器的选项来设置程序是一个Window程序或者是Console程序。
提示:我发现这个配置只对Release模式起作用,当然Debug带console也是有好处的,那就是我们可以在程序中使用printf或者std::cout来打印代码的调试信息。
/subsystem:windows
/subsystem:console

为什么中文乱码?

FLTK 1.3.4是支持UTF-8编码的。如果出现了中文乱码情况,通过将源代码文件转变为UTF-8编码格式可能会解决。

这里推荐一个VS插件,可以强制新建的文件都以UTF-8编码方式编码。

Windows下使用VS2017搭建FLTK开发环境的更多相关文章

  1. 【Hadoop】:Windows下使用IDEA搭建Hadoop开发环境

    笔者鼓弄了两个星期,终于把所有有关hadoop的环境配置好了,一是虚拟机上的完全分布式集群,但是为了平时写代码的方便,则在windows上也配置了hadoop的伪分布式集群,同时在IDEA上就可以编写 ...

  2. Windows+QT+Eclipse+MinGW搭建QT开发环境详细教程

     Windows+QT+Eclipse+MinGW搭建QT开发环境详细教程 一.准备工具: QT-SDK for Windows:http://get.qt.nokia.com/qtsdk/qt-sd ...

  3. mac 下 用 glfw3 搭建opengl开发环境

    mac 下 用 glfw3 搭建opengl开发环境 下载编译 glfw3 Build Setting 里面, Library Search Paths -> 设置好编译 glfw 库的路径 H ...

  4. (转)Lua学习笔记1:Windows7下使用VS2015搭建Lua开发环境

    Lua学习笔记1:Windows7下使用VS2015搭建Lua开发环境(一)注意:工程必须添加两个宏:“配置属性”/“C或C++”/“预处理器”/“预处理器定义”,添加两个宏:_CRT_SECURE_ ...

  5. MAC 下用 brew 搭建 PHP 开发环境

    Mac下用brew搭建PHP(LNMP/LAMP)开发环境 Mac下搭建lamp开发环境很容易,有xampp和mamp现成的集成环境.但是集成环境对于经常需要自定义一些配置的开发者来说会非常麻烦,而且 ...

  6. windows下Qt5.2 for android开发环境搭建

    windows下Qt5.2 forAndroid开发环境配置 1.下载安装Qt 5.2.0 for Android (Windows 32-bit)   http://qt-project.org/d ...

  7. 利用 WSL 在 Windows下打造高效的 Linux 开发环境

    WSL-Windows Subsystem for Linux 介绍 The Windows Subsystem for Linux lets developers run Linux environ ...

  8. Mac环境下使用VSCode搭建Go开发环境

    换新工作啦!!!开心一下.到了新公司一看,乖乖,全MAC办公,让我这只用过windows的土包子怎么活,而且公司的人都好高冷,于是自己摸索着搭建go语言开发环境了. go语言的ide挺多的,JetBr ...

  9. Windows10系统下使用Docker搭建ClickHouse开发环境

    前提 随着现在业务开展,几个业务系统的数据量开始急剧膨胀.之前使用了关系型数据库MySQL进行了一次数据仓库的建模,发现了数据量上来后,大量的JOIN操作在提高了云MySQL的配置后依然有点吃不消,加 ...

随机推荐

  1. GMA Round 1 逃亡

    传送门 逃亡 你在森林中,遇到了一只老虎.此时此刻,老虎在(0,0)的位置,你在(2,1)的位置. 你开始沿着一条林间小路逃亡,移动向量是$(\frac{\sqrt{6}}{2},\frac{\sqr ...

  2. Hibernate(11)_基于外键的双向1对1

    一.基于外键的双向1对1 对于基于外键的1-1关联,其外键可以存放在任意一边,在需要存放外键一端,增加many-to-one元素.为many-to-one元素增加unique="true&q ...

  3. git忽略已加入到版本库的文件

    项目中,我们会用到 '.gitignore' 来忽略一些文件,不记录这些文件的版本控制. 然而,经常发现,已经添加到了 '.gitignore' 的文件/目录,每次的修改等扔会记录版本. 产生这种原因 ...

  4. 国际化之iPhone设备支持的语种

    有没有想过,iPhone 语言到底支持多少语言呢?我倒是搜索了一下,整理出下面一份列表,供大家参考 参考链接: https://www.ibabbleon.com/iOS-Language-Codes ...

  5. Sublime Text 显示韩文和文件编码

    菜单  Preferences –> Settings 右侧的User {    "font_size": 12,    "show_encoding": ...

  6. java调用第三方的webservice应用实例

    互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他网站的内容信息集成到我们的Web应用中显示. 一些常用的webservice网站的链接地址: ...

  7. 导入的eclipse 中 maven项目,项目中已经加入lombok.jar包,但是不能编译成功

    原文地址:http://bbs.csdn.net/topics/390854507/ 答案是最后一个:单击工程名  Maven->Update Project

  8. (原)netbeans中添加anaconda3安装的opencv

    转载请注明出处: https://www.cnblogs.com/darkknightzh/p/9974310.html 新装了ubuntu16.04后,直接安装了anaconda3,调试c++程序时 ...

  9. PHP事件机制

    先用 3W1H(who what why how) 分析法的思路来解释一下 事件机制, 更重要的是, 这个有什么用. 正常的程序执行, 或者说人的思维趋势, 都是按照 时间线性串行 的, 保持 连续性 ...

  10. 关于Java 软件工程师应该知道或掌握的技术栈

    鄙人星云,今天突然想写这么一篇需要持续更新的文章,主要目的用于总结当前最流行的技术和工具,方便自己也方便他人. 更新时间:2018-10-23 09:26:19 码农职业路径图 码农入门职业路径图 J ...