程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> visual C++ 項目和解決方案的區別,visual解決方案

visual C++ 項目和解決方案的區別,visual解決方案

編輯:C++入門知識

visual C++ 項目和解決方案的區別,visual解決方案


項目:

        項目是構成某個程序的全部組件的容器,該程序可能是控制台程序、基於窗口的程序或某種別的程序。程序通常由一個或多個包含用戶代碼的源文件,可能還要加上包含其它輔助數據的文件組成。某個項目的所有文件都存儲在相應的項目文件夾中,關於項目的詳細信息存儲在一個擴展名為.vcproj的xml文件中,該文件同樣存儲在相應的項目文件夾中。項目文件夾還包括其它文件夾,它們用來存儲編譯及鏈接項目時所產生的輸出。

解決方案:

        顧名思義,解決方案的含義是一種將所有程序和其它資源(它們是某個具體的數據處理問題的解決方案)聚集到一起的機制。例如,用於企業經營的分布式訂單錄入系統可能由若干個不同的程序組成,而各個程序是作為同一個解決方案內的項目開發的,因此,解決方案就是存儲與一個或多個項目有關的所有信息的文件夾,這樣就有一個或多個項目文件夾是解決方案文件夾的子文件夾。與解決方案中項目有關的信息存儲在擴展名為.sln和.suo的兩個文件中。當創建某個項目時,如果沒有選擇在現有的解決方案中添加該項目,那麼系統將自動創建一個新的解決方案。

        當創建項目及解決方案時,可以在同一個解決方案中添加更多的項目。我們可以在現有的解決方案中添加任意種類的項目,但通常只添加與該解決方案內現有項目相關的項目。一般來說,各個項目都應該有自己的解決方案,除非我們有很好的理由不這樣做。

     

        VS2010創建項目時,默認的項目文件夾的名稱與項目名稱相同,該文件夾還將容納構成該項目定義的文件。如果不修改的話,解決方案文件夾具有與項目文件夾相同的名稱,其中包含了項目文件夾、定義解決方案內容的文件。解決方案文件夾內包含如下四個文件:

 

  • 擴展名為.sln的文件,記錄著關於解決方案中項目的信息
  • 擴展名為.suo的文件,其中記錄著應用於該解決方案的用戶選項
  • 擴展名為.sdf的文件,記錄著與解決方案的Intellisense有關的數據。Intellisense是在Editor窗口中輸入代碼時提供自動完成和提示功能的工具。
  • 擴展名為.opensdf的文件,記錄著關於項目狀態的信息,此文件只在項目處於打開狀態時才有。
項目文件夾中的Readme.txt文件包含已經為該項目創建的所有文件的內容摘要。           構建項目時創建的文件:         構建項目完成後將看到解決方案文件夾中出現了一個新的子文件夾Debug。該文件夾包含剛才構建項目時產生的輸出,這個文件夾包含三個文件。
  • .exe文件:可執行文件
  • .ilk文件:在重新構建項目時被鏈接器使用,它使鏈接器能夠根據修改的源代碼生成的目標文件增量的鏈接到現有的.exe文件,從而避免每次修改程序時都重新鏈接所有文件。
  • .pdb文件:包含調試信息,在調試模式中執行程序要使用該調試信息。在調試模式中,可以動態檢查程序執行過程中所生成的信息。
        在項目文件夾中也有一個Debug目錄,它包含在構建過程中生成的很多文件,從Windows Explorer的Type描述中可以看到它們包含何種信息。     ipch文件夾和.sdf文件是什麼?         ipch的文件夾,和一個與工程同名的.sdf文件,而且ipch下面的文件和.sdf文件都很大,這些文件是Visual Studio用來保存預編譯的頭文件和Intellisense用的,刪除這些文件對於工程的開發完全沒有影響。那如果我既想使用預編譯的頭文件和Intellisense,又不想看到這些無聊的文件該怎麼辦呢?

        工具->選項->文本編輯器->C/C++ ->高級->回退位置 那裡,兩個都設成true

        如果你設置了回退位置,那麼IPCH等就會到那裡去,否則會在系統TEMP裡,有個VC++文件夾下。

 

VS2010解決方案和工程文件的另一種解釋:

將所有文件分為6個部分:解決方案相關文件、工程相關文件、應用程序頭文件和源文件、資源文件、預編譯頭文件和編譯鏈接生成文件。

1.解決方案相關文件

解決方案相關文件包括解決方案文件夾下的.sdf文件、.sln文件、.suo文件和ipch文件夾。

.sdf文件和ipch目錄一般占用空間比較大,幾十兆甚至上百兆,與智能提示、錯誤提示、代碼恢復、團隊本地倉庫等相關。如果你覺得不需要則可以設置不生成它們,方法是點擊菜單欄Tools->Options,彈出Options對話框,選擇左側面板中Text Editor->C/C++->Advanced,右側列表中第一項Disable Database由False改為True就可以了,最後關閉VS2010再刪除.sdf文件和ipch目錄以後就不會再產生了。但關閉此選項以後也會有很多不便,例如寫程序時的智能提示沒有了。

.sln文件和.suo文件為MFC自動生成的解決方案文件,它包含當前解決方案中的工程信息,存儲解決方案的設置。

2.工程相關文件

工程相關文件包括工程文件夾下的.vcxproj文件和.vcxproj.filters文件。

.vcxproj文件是MFC生成的工程文件,它包含當前工程的設置和工程所包含的文件等信息。.vcxproj.filters文件存放工程的虛擬目錄信息,也就是在解決方案浏覽器中的目錄結構信息。

3.應用程序頭文件和源文件

應用程序向導會根據應用程序的類型(單文檔、多文檔或基於對話框的程序)自動生成一些頭文件和源文件,這些文件是工程的主體部分,用於實現主框架、文檔、視圖等。

下面分別簡單介紹下各個文件:http://hovertree.com/menu/cpp/

HelloWorld.h:應用程序的主頭文件。主要包含由CWinAppEx類派生的CHelloWorldApp類的聲明,以及CHelloWorldApp類的全局對象theApp的聲明。

HelloWorld.cpp:應用程序的主源文件。主要包含CHelloWorldApp類的實現,CHelloWorldApp類的全局對象theApp的定義等。

MainFrm.h和MainFrm.cpp:通過這兩個文件從CFrameWndEx類派生出CMainFrame類,用於創建主框架、菜單欄、工具欄和狀態欄等。

HelloWorldDoc.h和HelloWorldDoc.cpp:這兩個文件從CDocument類派生出文檔類CHelloWorldDoc,包含一些用來初始化文檔、串行化(保存和裝入)文檔和調試的成員函數。

HelloWorldView.h和HelloWorldView.cpp:它們從CView類派生出名為CHelloWorldView的視圖類,用來顯示和打印文檔數據,包含了一些繪圖和用於調試的成員函數。

ClassView.h和ClassView.cpp:由CDockablePane類派生出CClassView類,用於實現應用程序界面左側面板上的Class View。

FileView.h和FileView.cpp:由CDockablePane類派生出CFileView類,用於實現應用程序界面左側面板上的File View。

OutputWnd.h和OutputWnd.cpp:由CDockablePane類派生出COutputWnd類,用於實現應用程序界面下側面板Output。

PropertiesWnd.h和PropertiesWnd.cpp:由CDockablePane類派生出CPropertiesWnd類,用於實現應用程序界面右側面板Properties。

ViewTree.h和ViewTree.cpp:由CTreeCtrl類派生出CViewTree類,用於實現出現在ClassView和FileView等中的樹視圖。

4.資源文件

一般我們使用MFC生成窗口程序都會有對話框、圖標、菜單等資源,應用程序向導會生成資源相關文件:res目錄、HelloWorld.rc文件和Resource.h文件。

res目錄:工程文件夾下的res目錄中含有應用程序默認圖標、工具欄使用圖標等圖標文件。

HelloWorld.rc:包含默認菜單定義、字符串表和加速鍵表,指定了默認的About對話框和應用程序默認圖標文件等。

Resource.h:含有各種資源的ID定義。

5.預編譯頭文件

幾乎所有的MFC程序的文件都要包含afxwin.h等文件,如果每次編譯都要編譯一次則會大大減慢編譯速度。所以把常用的MFC頭文件都放到了stdafx.h文件中,然後由stdafx.cpp包含stdafx.h文件,編譯器對stdafx.cpp只編譯一次,並生成編譯之後的預編譯頭HelloWorld.pch,大大提高了編譯效率。

6.編譯鏈接生成文件

如果是Debug方式編譯,則會在解決方案文件夾和工程文件夾下都生成Debug子文件夾,而如果是Release方式編譯則生成Release子文件夾。

工程文件夾下的Debug或Release子文件夾中包含了編譯鏈接時產生的中間文件,解決方案文件夾下的Debug或Release子文件夾中主要包含有應用程序的可執行文件。

關於應用程序工程文件的組成結構就先講到這了。其中包含了很多專有名詞,以後大家會慢慢熟悉的

 

 

 

學習C++學的是什麼?

        C++是很復雜的一門語言,因為要實現在其它語言中很簡單的任務,在C++中通常需要跟多的代碼和時間,例如:創建一個窗口,其它語言有內置的支持,而在純粹的C++環境中是做不到的。因為C++沒有提供GUI的內置支持,如果要用C++創建一個窗口,我們需要使用系統API或者使用封裝了系統API的一些庫,前者如Win32系統API後者如MFC、wxWidgets等。

        但是這不代表C++不好,反而C++是很強大的,我們學習C++學的不僅僅是C++的語法,因為僅僅懂C++的語法有什麼用呢?演示算法嗎?當然不是了。我認為,學習C++初期當然是熟悉C++的語法,中期是學習STL庫、系統API以及C++面向對象的思想和一般的設計方法,後者是伴隨你C++生涯一生的,因為它沒有終點。

        除了加深對C++的理解之外,你還得需要各種各樣的基於C++的庫去實現更具體的東西。如果你想做GUI,那你得學習QT、wxWidgets等。如果想做游戲方面的那麼Ogre、Unreal、Bigworld等庫是你需要學習的。網絡方面的庫ASIO、RakNet、ACE等。這些庫都是基於C++的,其封裝了底層的API,似的我們可以不必每次去使用繁雜的API來實現我們想要的功能。當然你也可以使用C++去封裝這些API,讓自己成為一個庫作者,方便他人。

推薦:http://www.cnblogs.com/roucheng/p/cppjy.html

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved