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 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(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編碼方式編碼。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM