• Windows下使用VS2017搭建FLTK开发环境


    环境介绍

    系统: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 Studio2017CommunityVCToolsMSVC14.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(450, 330, "First App!");
            box = new Fl_Box(20, 40, 360, 200, "Hello World,世界你好");
            box->box(FL_FLAT_BOX);
            box->labelsize(36);                   //设置字体大小
            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编码方式编码。

  • 相关阅读:
    图形
    附属信息
    文件操作
    字符编码
    Python数据类型之基础记。。。
    python并发编程之多进程
    python并发编程之多进程
    计算机基础之计算机系统的简单了解。
    元类
    基于socketserver模块实现并发tcp/udp
  • 原文地址:https://www.cnblogs.com/lulipro/p/10120917.html
Copyright © 2020-2023  润新知