VC6.0工程设置说明
http://www.tuicool.com/articles/I3mQNf
所謂:“工欲善其事,必先利其器”。如果我們精于VC開發(fā)環(huán)境,我們是不是能夠做得更加游刃有余呢?
先來看一下VC的處理流程,大致分為兩步:編譯和連接。源文件通過編譯生成了.obj文件;所有.obj文件和.lib文件通過連接生成.exe文件或.dll文件。
1. 打開工程設置對話框。
左邊的列表可以選擇要設置的工程編譯方式( Debug 或 Release ),如果多個工程,還可以選擇要設置的工程。右邊是一個屬性頁,內容十分豐富,依次是: General , Debug , C/C++ , Link , Resource , MIDL , Browse Info , Custom Build , Pre-link Step , Post-build step
編譯參數的設置。主要通過VC的菜單項Project->Settings->C/C++頁來完成。我們可以看到這一頁的最下面Project Options中的內容,一般如下:
/nologo /MDd /W3 /Gm /GX /ZI /Od /D “WIN32″ /D “_DEBUG” /D “_WINDOWS” /D “_AFXDLL” /D “_MBCS” /Fp”Debug/WritingDlgTest.pch” /Yu”stdafx.h” /Fo”Debug/” /Fd”Debug/” /FD /GZ /c
各個參數代表的意義,可以參考Msdn,文章后面有解釋。
2. C/C++頁
1) General:一些總體設置。
1.Warninig level 警告級別, VC 默認為 3 ,一般不更改,等級越低,對代碼的要求就越嚴格。
2.Optimizations Optimizations 優(yōu)化級別, Debug 下默認設置為 Disable(Debug) ,就是不優(yōu)化,在 Release 下默認設置為 Maximize Speed ,就是最大速度優(yōu)化。在追求效率或者編譯結果的時候可以選擇最大速度或最小尺寸的選項,不過微軟不保證優(yōu)化的準確性。
3.Waring as error 不用多說了,經常忽略警告的人不會選這項吧。最好別選,否則你會煩死。
4.Generate browse info 用以生成 .sbr 文件,記錄類、變量等符號信息,可以在 Category 的 Listing Files 項中進行更多的設置。產生瀏覽信息,在編輯調試加了一些功能,會產生很大的編譯文件,建議不要選
5.Debug info 生成調試信息,選擇調試信息的詳細程度,在 debug 情況下,一般選擇 Program DataBase 或 Program DataBase for Editon and continue 二者區(qū)別在于后者可以在調試過程中,修改代碼后,部分編譯后,在當前環(huán)境繼續(xù)執(zhí)行,雖然功能很強,建議還是用前者吧。 Release 一般選擇 None 。
None ,不產生任何調試信息(編譯比較快);
Line Numbers Only ,僅生成全局的和外部符號的調試信息到 .OBJ 文件或 .EXE 文件,減小目標文件的尺寸;
C 7.0- Compatible ,記錄調試器用到的所有符號信息到 .OBJ 文件和 .EXE 文件;
Program Database ,創(chuàng)建 *.pdb 文件記錄所有調試信息;
Program Database for Edit and Continue ,創(chuàng)建 *.pdb 文件記錄所有調試信息,并且支持調試時編輯。
6.Preprocessor definitions 預定義宏, Defines a preprocessing symbol for your source file ,相當于全局【 #define 】。提示: 一般定義了 UNICODE _UNICODE 則認為是使用 unicode 編碼,沒定義則認為是 MBCS 。
2) C++ Language:
-pointer_to_member representation用來設置類定義/引用的先后關系,一般為Best-Case Always表示在引用類之前該類肯定已經定義了;
-Enable Exception Handling,進行同步的異常處理;
-Enable Run-Time Type Information迫使編譯器增加代碼在運行時進行對象類型檢查;
-Disable Construction Displacements,設置類構造/析構函數調用虛函數問題。
3) Code Generation:
-Processor表示代碼指令優(yōu)化,可以為80386、80486、Pentium、Pentium Pro,或者Blend表示混合以上各種優(yōu)化。
-Use run-time library用以指定程序運行時使用的運行時庫(單線程或多線程,Debug版本或Release版本),有一個原則就是,一個進程不要同時使用幾個版本的運行時庫。
Single-Threaded,靜態(tài)連接LIBC.LIB庫;
Debug Single-Threaded,靜態(tài)連接LIBCD.LIB庫;
Multithreaded,靜態(tài)連接LIBCMT.LIB庫;
Debug Multithreaded,靜態(tài)連接LIBCMTD.LIB庫;
Multithreaded DLL,動態(tài)連接MSVCRT.DLL庫;
Debug Multithreaded DLL,動態(tài)連接MSVCRTD.DLL庫。連接了單線程庫就不支持多線程調用,連接了多線程庫就要求創(chuàng)建多線程的應用程序。
-Calling convention可以用來設定調用約定,有三種:__cdecl、__fastcall和__stdcall。各種調用約定的主要區(qū)別在于,函數調用時,函數的參數是從左到右壓入堆棧還是從右到左壓入堆棧;在函數返回時,由函數的調用者來清理壓入堆棧的參數還是由函數本身來清理;以及在編譯時對函數名進行的命名修飾(可以通過Listing Files看到各種命名修飾方式)。
-Struct member alignment用以指定數據結構中的成員變量在內存中是按幾字節(jié)對齊的,根據計算機數據總線的位數,不同的對齊方式存取數據的速度不一樣。這個參數對數據包網絡傳輸等應用尤為重要,不是存取速度問題,而是數據位的精確定義問題,一般在程序中使用#pragma pack來指定。
4) Customize (自定義):
1.Disable language extensions 禁止語言擴展 (Microsoft Extensions to C) ,表示不使用微軟為標準 C 做的語言擴展。
2.Eliminate Duplicate Strings 主要用于字符串優(yōu)化(將字符串放到緩充池里以節(jié)省空間),使用這個參數,使得
char *sBuffer = “This is a character buffer”;
char *tBuffer = “This is a character buffer”;
sBuffer 和 tBuffer 指向的是同一塊內存空間;
3.Enable Function-Level Linking 告訴編譯器將各個函數按打包格式編譯;
4.Enables minimal rebuild ,通過保存關聯信息到 .IDB 文件,使編譯器只對最新類定義改動過的源文件進行重編譯,提高編譯速度;
5.Enable Incremental Compilation ,同樣通過 .IDB 文件保存的信息,只重編譯最新改動過的函數;
6.Suppress Startup Banner and Information Messages 設置預編譯文件( pch )的存放路徑及(或)文件名,在 Project Options 中配置。用以控制參數是否在 output 窗口輸出。
5) Listing Files:
Generate browse info的功能上面已經提到過。這里可以進行更多的設置。Exclude Local Variables from Browse Info表示是否將局部變量的信息放到.SBR文件中。Listing file type可以設置生成的列表信息文件的內容:Assembly-Only Listing僅生成匯編代碼文件(.ASM擴展名);Assembly With Machine Code生成機器代碼和匯編代碼文件(.COD擴展名);Assembly With Source Code生成源代碼和匯編代碼文件(.ASM擴展名);Assembly, Machine Code, and Source生成機器碼、源代碼和匯編代碼文件(.COD擴展名)。Listing file name為生成的信息文件的路徑,一般為Debug或Release目錄下,生成的文件名自動取源文件的文件名。
6) Optimizations:
代碼優(yōu)化設置。可以選擇Maximize Speed生成最快速的代碼,或Minimize Size生成最小尺寸的程序,或者Customize定制優(yōu)化。定制的內容包括:
Assume No Aliasing,不使用別名(提高速度);
Assume Aliasing Across Function Calls,僅函數內部不使用別名;
Global Optimizations,全局優(yōu)化,比如經常用到的變量使用寄存器保存,或者循環(huán)內的計算優(yōu)化,如
i = -100;
while( i < 0 ){ i += x + y;}
會被優(yōu)化為
i = -100;
t = x + y;
while( i < 0 ){i += t;}
Generate Intrinsic Functions,使用內部函數替換一些函數調用(提高速度);
Improve Float Consistency,浮點運算方面的優(yōu)化;
Favor Small Code,程序(exe或dll)尺寸優(yōu)化優(yōu)先于代碼速度優(yōu)化;
Favor Fast Code,程序(exe或dll)代碼速度優(yōu)化優(yōu)先于尺寸優(yōu)化;
Frame-Pointer Omission,不使用幀指針,以提高函數調用速度;
Full Optimization,組合了幾種參數,以生成最快的程序代碼。
Inline function expansion,內聯函數擴展的三種優(yōu)化(使用內聯可以節(jié)省函數調用的開銷,加快程序速度):Disable不使用內聯;Only __inline,僅函數定義前有inline或__inline標記使用內聯;Any Suitable,除了inline或__inline標記的函數外,編譯器“覺得”應該使用內聯的函數,都使用內聯。
7) Precompiled Headers:
預編譯頭文件的設置。使用預編譯可以提高重復編譯的速度。VC一般將一些公共的、不大變動的頭文件(比如afxwin.h等)集中放到stdafx.h中,這一部分代碼就不必每次都重新編譯(除非是Rebuild All)。
8) Preprocessor:
預編譯處理??梢远x/解除定義一些常量。Additional include directories,可以指定額外的包含目錄,一般是相對于本項目的目錄,如..\Include。
3. Link 頁
連接參數的設置。主要通過VC的菜單項Project->Settings->Link頁來完成。我們可以看到這一頁的最下面Project Options中的內容,一般如下:
/nologo /subsystem:windows /incremental:yes /pdb:”Debug/WritingDlgTest.pdb” /debug /machine:I386 /out:”Debug/WritingDlgTest.exe” /pdbtype:sept
下面我們分別來看一下Category中的各項設置。
1) General:
1.Output file name 輸出文件名稱,支持相對路徑
2.Object/library module 工程所需要的 lib ,默認當前路徑
3.Generate debug info 產生 debug 信息。生成 Debug 信息到 *.pdb 文件(具體格式可以在 Category->Debug 中設置), Debug 默認為 true , Release 默認為 false
4.Ignore All Default Libraries 放棄所有默認的庫連接
5.Link incrementally 增量連接,必須選擇 Program database 選項,提高編譯連接的速度,通過生成 . ILK 文件實現遞增式連接以提高后續(xù)連接速度,但一般這種方式下生成的文件( EXE 或 DLL )較大
6.Generate Mapfile 生成 *.map 文件記錄模塊相關信息
7.Enable profiling 允許程序以 profiling 啟動,可以測試程序的效率等
2) Customize:
1.Use program database 允許使用程序數據庫,這樣連接器會把調試信息放在程序數據庫中,如果不選中該選項,那么也不能使用遞增連接方式
2.Force File Output 強制產生輸出文件( EXE 或 DLL ) , 即使某個模塊引用了一些未定義或者重復定義的符號,連接器仍然會強制(但不一定能正確運行)產生輸出文件( EXE 或 DLL )
3.Print Progress Messages 可以將連接過程中的進度信息輸出到 Output 窗口
3) Debug:
設置是否生成調試信息,以及調試信息的格式。格式可以有Microsoft Format、COFF Format(Common Object File Format)和Both Formats三種選擇;Separate Types,表示將Debug格式信息以獨立的.PDB文件存放,還是直接放在各個源文件的.PDB文件中。選中的話,表示采用后者的方式,這種方式調試啟動比較快。
4) Input:
這里可以指定要連接的庫文件,放棄連接的庫文件。還可以增加額外的庫文件目錄,一般是相對于本項目的目錄,如..\Lib。Force Symbol References,可以指定連接特定符號定義的庫。
5) Output:
1.Base Address 可以改變程序默認的基地址( EXE 文件默認為 0x400000 , DLL 默認為 0x10000000 ),操作系統(tǒng)裝載一個程序時總是試著先從這個基地址開始
2.Entry-Point Symbol 可以指定程序的入口地址,一般為一個函數名(且必須采用 __stdcall 調用約定)。一般 Win32 的程序, EXE 的入口為 WinMain , DLL 的入口為 DllEntryPoint ;最好讓連接器自動設置程序的入口點。默認情況下,通過一個 C 的運行時庫函數來實現:控制臺程序采用 mainCRTStartup ( 或 wmainCRTStartup) 去調用程序的 main ( 或 wmain) 函數; Windows 程序采用 WinMainCRTStartup ( 或 wWinMainCRTStartup) 調用程序的 WinMain ( 或 wWinMain ,必須采用 __stdcall 調用約定 ) ; DLL 采用 _DllMainCRTStartup 調用 DllMain 函數(必須采用 __stdcall 調用約定)
3.Stack allocations 用以設置程序使用的堆棧大小(請使用十進制) , 默認為 1 兆字節(jié)。
4.Version Information 告訴連接器在 EXE 或 DLL 文件的開始部分放上版本號
值得注意的是,上面各個參數是大小寫敏感的;在參數后加上 “-” 表示該參數無效;各個參數值選項,有 “*” 的表示為該參數的默認值;可以使用頁右上角的 “Reset” 按鈕來恢復該頁的所有默認設置。
4. 其他選項頁的參數
1) Project->Settings->General(常規(guī)),可以設置連接MFC庫的方式(靜態(tài)或動態(tài))。如果是動態(tài)連接,在你的軟件發(fā)布時不要忘了帶上MFC的DLL。
2) Project->Settings->Debug,可以設置調試時運行的可執(zhí)行文件,以及命令行參數等。
3) Project->Settings->Custom Build(自定義組建),可以設置編譯/連接成功后自動執(zhí)行一些操作。比較有用的是,寫COM時希望VC對編譯通過的COM文件自動注冊,可以如下設置:
Description: Register COM
Commands: regsvr32 /s /c (TargetPath)echoregsvr32exe.time>(TargetDir)$(TargetName).trg
Outputs: $(TargetDir)\$(TargetName).trg
4) Tools->Options->Directories,設置系統(tǒng)的Include、Library路徑。
5. 一些小竅門
1) 有時候,你可能在編譯的時候,計算機突然非法關機了(可能某人不小心碰了電源或你的內存不穩(wěn)定等原因)。當你重啟機器后打開剛才的項目,重新進行編譯,發(fā)現VC會崩掉。你或許以為你的VC編譯器壞了,其實不然(你試試編譯其它項目,還是好的!),你只要將項目的.ncb、.opt、.aps、.clw文件以及Debug、Release目錄下的所有文件都刪掉,然后重新編譯就行了。
2) 如果你想與別人共享你的源代碼項目,但是把整個項目做拷貝又太大。你完全可以刪掉以下文件:.dsw、.ncb、.opt、.aps、.clw、. plg文件以及Debug、Release目錄下的所有文件。
3) 當你的Workspace中包含多個Project的時候,你可能不能直觀地、一眼看出來哪個是當前項目。可以如下設置:Tools->Options->Format,然后在Category中選擇Workspace window,改變其默認的字體(比如設成Fixedsys)就行了。
4) 如何給已有的Project改名字?將該Project關掉。然后以文本格式打開.dsp文件,替換原來的Project名字即可。
5) VC6對類成員的智能提示功能很有用,但有時候會失靈。你可以先關掉項目,將.clw和.ncb刪掉,然后重新打開項目,點擊菜單項View->ClassWizard,在彈出的對話框中按一下“Add All”按鈕;重新Rebuild All。應該可以解決問題
6)如何解決unexpected end of file while looking for precompiled header directive的問題?右鍵點工程名,選設置,然后選c/c++屬性頁,再選catagory選單中選 precompiled header ,將選項置成no use 或者autometic
編譯選項對編程人員有時候是相當的模糊,下面對其做個總結:
visual studio
/Od 禁用優(yōu)化(默認值) disable optimizations (default)
/Ox 最大化選項。(/Ogityb2 /Gs) maximum opts. (/Ogityb1 /Gs)
/Og 啟用全局優(yōu)化 enable global optimization
/Oy[-] 啟用框架指針省略 enable frame pointer omission
/Oi 啟用內建函數 enable intrinsic functions
-代碼生成-
/G3 為 80386 進行優(yōu)化 optimize for 80386
/G4 為 80486 進行優(yōu)化 optimize for 80486
/GR[-] 啟用 C++ RTTI enable C++ RTTI
/G5 為 Pentium 進行優(yōu)化 optimize for Pentium
/G6 為 Pentium Pro 進行優(yōu)化 optimize for Pentium Pro
/GX[-] 啟用 C++ 異常處理(與 /EHsc 相同) enable C++ EH (same as /EHsc)
/EHs 啟用同步 C++ 異常處理 enable synchronous C++ EH
/GD 為 Windows DLL 進行優(yōu)化 optimize for Windows DLL
/GB 為混合模型進行優(yōu)化(默認) optimize for blended model (default)
/EHa 啟用異步 C++ 異常處理 enable asynchronous C++ EH
/Gd __cdecl 調用約定 __cdecl calling convention
/EHc extern“C”默認為 nothrow extern “C” defaults to nothrow
/Gr __fastcall 調用約定 __fastcall calling convention
/Gi[-] 啟用增量編譯 enable incremental compilation
/Gz __stdcall 調用約定 __stdcall calling convention
/Gm[-] 啟用最小重新生成 enable minimal rebuild
/GA 為 Windows 應用程序進行優(yōu)化 optimize for Windows Application
/Gf 啟用字符串池 enable string pooling
/QIfdiv[-] 啟用 Pentium FDIV 修復 enable Pentium FDIV fix
/GF 啟用只讀字符串池 enable read-only string pooling
/QI0f[-] 啟用 Pentium 0x0f 修復 enable Pentium 0x0f fix
/Gy 分隔鏈接器函數 separate functions for linker
/GZ 啟用運行時調試檢查 enable runtime debug checks
/Gh 啟用鉤子函數調用 enable hook function call
/Ge 對所有函數強制堆棧檢查 force stack checking for all funcs
/Gs[num] 禁用堆棧檢查調用 disable stack checking calls
-輸出文件-
/Fa[file] 命名程序集列表文件 name assembly listing file
/Fo 命名對象文件 name object file
/FA[sc] 配置程序集列表 configure assembly listing
/Fp 命名預編譯頭文件 name precompiled header file
/Fd[file] 命名 .PDB 文件 name .PDB file
/Fr[file] 命名源瀏覽器文件 name source browser file
/Fe 命名可執(zhí)行文件 name executable file
/FR[file] 命名擴展 .SBR 文件 name extended .SBR file
/Fm[file] 命名映射文件 name map file
-預處理器-
/FI 命名強制包含文件 name forced include file
/C 不吸取注釋 don’t strip comments
/U 移除預定義宏 remove predefined macro
/D{=|#} 定義宏 define macro
/u 移除所有預定義宏 remove all predefined macros
/E 將預處理定向到標準輸出 preprocess to stdout
/I 添加到包含文件的搜索路徑 add to include search path
/EP 將預處理定向到標準輸出,不要帶行號 preprocess to stdout, no #line
/X 忽略“標準位置” ignore “standard places”
/P 預處理到文件 preprocess to file
-語言-
/Zi 啟用調試信息 enable debugging information
/Zl 忽略 .OBJ 中的默認庫名 omit default library name in .OBJ
/ZI 啟用調試信息的“編輯并繼續(xù)”功能 enable Edit and Continue debug info
/Zg 生成函數原型 generate function prototypes
/Z7 啟用舊式調試信息 enable old-style debug info
/Zs 只進行語法檢查 syntax check only
/Zd 僅要行號調試信息 line number debugging info only
/vd{0|1} 禁用/啟用 vtordisp disable/enable vtordisp
/Zp[n] 在 n 字節(jié)邊界上包裝結構 pack structs on n-byte boundary
/vm 指向成員的指針類型 type of pointers to members
/Za 禁用擴展(暗指 /Op) disable extensions (implies /Op)
/noBool 禁用“bool”關鍵字 disable “bool” keyword
/Ze 啟用擴展(默認) enable extensions (default)
- 雜項 -
/?, /help 打印此幫助消息 print this help message
/c 只編譯,不鏈接 compile only, no link
/W 設置警告等級(默認 n=1) set warning level (default n=1)
/H 最大化外部名稱長度 max external name length
/J 默認 char 類型是 unsigned default char type is unsigned
/nologo 取消顯示版權消息 suppress copyright message
/WX 將警告視為錯誤 treat warnings as errors
/Tc 將文件編譯為 .c compile file as .c
/Yc[file] 創(chuàng)建 .PCH 文件 create .PCH file
/Tp 將文件編譯為 .cpp compile file as .cpp
/Yd 將調試信息放在每個 .OBJ 中 put debug info in every .OBJ
/TC 將所有文件編譯為 .c compile all files as .c
/TP 將所有文件編譯為 .cpp compile all files as .cpp
/Yu[file] 使用 .PCH 文件 use .PCH file
/V 設置版本字符串 set version string
/YX[file] 自動的 .PCH 文件 automatic .PCH
/w 禁用所有警告 disable all warnings
/Zm 最大內存分配(默認為 %) max memory alloc (% of default)
-鏈接-
/MD 與 MSVCRT.LIB 鏈接 link with MSVCRT.LIB
/MDd 與 MSVCRTD.LIB 調試庫鏈接 link with MSVCRTD.LIB debug lib
/ML 與 LIBC.LIB 鏈接 link with LIBC.LIB
/MLd 與 LIBCD.LIB 調試庫鏈接 link with LIBCD.LIB debug lib
/MT 與 LIBCMT.LIB 鏈接 link with LIBCMT.LIB
/MTd 與 LIBCMTD.LIB 調試庫鏈接 link with LIBCMTD.LIB debug lib
/LD 創(chuàng)建 .DLL Create .DLL
/F 設置堆棧大小 set stack size
/LDd 創(chuàng)建 .DLL 調試庫 Create .DLL debug libary
/link [鏈接器選項和庫] [linker options and libraries]
小知識:
1.Release 和 Debug 有什么不同
Release 版稱為發(fā)行版, Debug 版稱為調試版。
Debug 中可以單步執(zhí)行、跟蹤等功能,但生成的可執(zhí)行文件比較大,代碼運行速度較慢。 Release 版運行速度較快,可執(zhí)行文件較小,但在其編譯條件小無法執(zhí)行調試功能。
Release 的 exe 文件鏈接的是標準的 MFC DLL(Use MFC in a shared or static dll), 比如 MFC42.DLL 。這些 DLL 在安裝 Windows 的時候,已經配置,所以這些程序能夠在沒有安裝 Visual C++ 6.0 的機器上運行。而 Debug 版本的 exe 鏈接了調試版本的 MFC DLL 文件,如 MFC42D.DLL 。在沒有安裝 Visual C++6.0 的機器上不能運行,因為缺 MFC42D.DLL 等,除非選擇 use static dll when link 。
2.ASSERT 和 VERIFY 有什么區(qū)別
ASSERT 里面的內容在 Release 版本中不編譯, VERIFY 里面的內容仍然翻譯,但不再判斷真假。所以后者更安全一點。
例如 ASSERT(file.Open(strFileName)) 。
一旦到了 Release 版本中,這一行就忽略了, file 根本就不 Open() 了,而且沒有任何出錯的信息。如果用 VERIFY() 就不會有這個問題。
3.Workspace 和 Project 之間是什么樣的關系
每個 Workspace 可以包括幾個 project ,但只有一個處于 Active 狀態(tài),各個 project 之間可以有依賴關系,在 project 的 Setting.. 中可以設定,比如那個 Active 狀態(tài)的 project 可以依賴于其他的提供其函數調用的靜態(tài)庫。
在工程目錄下新建一個空的 .RC 文件,然后加入到工程中就可以了。
這似乎是目前這個 Visual C++ 6.0 版本的一個 bug ,可按如下步驟使其正常,如再出現,可如法炮制:
(1) 關閉 Project
(2) 刪除 “ 工程名 .ncb” 文件
(3) 重新打開工程
首先在工作區(qū)的 FileView 中選中該類的 .h 和 .cpp 文件,按 delete 刪除,然后在文件管理器中將這兩個文件刪除,再運行 ClassWizard ,這時出現是否移走該類的提示,選擇 remove 就可以了。
打開該類對應的頭文件,然后將其類名隨便改一下,這個時候工作區(qū)就會出現新的類,再將這個類改回原來的名字就可以了。
單擊菜單【 Project 】- > 【 Settings… 】彈出 “Project Setting” 對話框,切換到 “Link” 標簽頁,在 “Object/library modules” 處輸入 Lib 文件名稱,不同的 Lib 之間用空格格開。
在工作區(qū)的 FileView 視圖中選中對應的項目,單擊右鍵彈出菜單,選擇【 Clean(selection only) 】菜單即可
在新建工程的 “New” 對話框中選擇 “Custom Appwizard” 項,輸入新工程的名字,單擊【 OK 】按鈕。出現 “Custom AppWizard” 項,輸入新工程的名字,單擊【 OK 】按鈕。出現 “Custom AppWizard - Step 1 of 2” 對話框,選擇 “An existing Project” 項,單擊【 Next 】按鈕。出現 “Custom AppWizard - Step 2 of 2” 對話框,選擇現有工程的工程文件名,最后單擊【 Finish 】按鈕。編譯后就生成一個與現有工程相同但可以重新取名的工程 AppWizard 。
現在就可以項用 MFC AppWizard 一樣用這個定制的向導。如果不想用了,可以在 Visual C++ 6.0 安裝目錄下 Common\MSDev98\Template 目錄中刪除該 Wizard 對應的 .awx 和 .pdb 文件。
情景:明明之間改動了一個文件,卻要把整個項目全部重新編譯鏈接一次。剛剛鏈接好,一運行,有提示重新編譯鏈接一次。
這是因為出現了未來文件 ( 修改時間和創(chuàng)建時間比系統(tǒng)時間晚 ) 的緣故。可以這樣處理:找到工程文件夾下的 debug 目錄,將創(chuàng)建和修改時間都比系統(tǒng)時間晚的文件全部刪除,然后再從新 “Rebuild All” 一次。
12.Visual C++ 6.0 工程中的項目文件都表示什么。
.opt :工程關于開發(fā)化境的參數文件。如工具條位置等信息。
.aps(AppStudio File) 資源輔助文件,二進制格式,一般不用去管他。
.clw : ClassWizard 信息文件,實際上是 INI 文件格式,又興趣可以研究一下。有時候 ClassWizard 出了問題,手工修改 CLW 文件可以解決。如果此文件不存在的話,每次用 ClassWizard 的時候回提示是否重建。
.dsp(DevelopStudio Project) :項目文件,文本格式,不過不熟悉的或不要手工修改。
.dsw(DevelopStudio Workspace) :是工作區(qū)文件,其他特點和 .dsp 差不多。
.plg :是編譯信息文件,編譯時的 error 和 warning 信息文件 ( 實際上時一個 html 文件 ) ,一般用處不大。在單擊菜單【 Tool 】 -> 【 Option 】彈出的對話框里面有個選項可以控制這個文件的生成。
.hpj(Help Project) :是生成幫助文件的工程,用 microsoft Help Compiler 可以處理。
.mdp(Microsoft DevStudio Project) :是舊版本的項目文件,如果要打開此文件的話,回提示你是否轉換成新的 .dsp 格式。
.bsc :是用于瀏覽項目信息的,如果用 Source Brower 的話就必須又這個文件。如果不用這個功能的話,可以在 Project Options 里面去掉 Generate Browse Info File ,這樣可以加快編譯速度。
.map 是執(zhí)行文件的影像信息記錄文件,除非對系統(tǒng)底層,這個文件一般用不著。
.pch(Pre-Compiled File) :是與編譯文件,可以加快編譯速度,但是文件非常大。
.pdb(Program Database /C: 在預處理輸出中保留注釋語句 ) : 記錄了程序有關的一些數據和調試信息,在調試的時候可能有用。
.exp :只有在編譯 DLL 的時候才會生成,記錄了 DLL 文件的一些信息,一般也沒有用。
.ncb :無編譯瀏覽文件 (no compile browser) 。當自動完成功能出問題時可以刪除此文件。編譯工程后回自動生成。
完全可以刪掉以下文件: .dsw 、 .ncb 、 .opt 、 .aps 、 .clw 、 . plg 文件以及 Debug 、 Release 目錄下的所有文件。
如何給已有的 Project 改名字?將該 Project 關掉。然后以文本格式打開 .dsp 文件,替換原來的 Project 名字即可。
15 . VC6 對類成員的智能提示功能很有用,但有時候會失靈。你可以先關掉項目,將 .clw 和 .ncb 刪掉,然后重新打開項目,點擊菜單項 View->ClassWizard ,在彈出的對話框中按一下“ Add All ”按鈕;重新 Rebuild All 。應該可以解決問題。
總結
以上是生活随笔為你收集整理的VC6.0工程设置说明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux文件管理器thunar,文件管
- 下一篇: python的UnboundLocalE