05的Visual C中配_第1頁
05的Visual C中配_第2頁
05的Visual C中配_第3頁
05的Visual C中配_第4頁
05的Visual C中配_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、在Visual Studio 2005的Visual C+中配置Parser Generator作者:YENI (yeni)版本:1.1 (2007-12-23)前言Visual Studio 2005作為Visual Studio系列中最新的產(chǎn)品,為程序員提供了更加標準的C+環(huán)境及多種程序設(shè)計新技術(shù)。Parser Generator作為當前最好用的Windows環(huán)境LEX/YACC工具而被廣泛應(yīng)用。可惜的是,Parser Generator的最新版本也僅能支持至Visual Studio 2003。因此,將Parser Generator配置為可與Visual Studio 2005協(xié)同工作

2、,非常有必要。我經(jīng)過了近3天的努力,終于基本實現(xiàn)了VS2005與Parser Generator的配置工作。本文便介紹了這一配置過程??焖傧?qū)绻幌M敿毩私馀渲玫募毠?jié),而要在Visual Studio 2005中使用Parser Generator,請按以下步驟。此向?qū)О瑥陌惭b到可編譯代碼的全過程,可替代一般向?qū)?。l 配置環(huán)境1. 下載并安裝Parser Generator 2.07。2. 下載經(jīng)過編譯的Parser Generator修改文件,解壓縮至“Parser Generator 2Cpp”。3. 啟動Visual Studio 2005,菜單中選擇“Tools”、“Optio

3、ns”。4. 在左側(cè)列表中選擇“Projects and Solutions”、“VC+ Directories”。5. 在右上的下拉框中選擇“Include files”,按下面的“New Line (Ctrl-Insert)”按鈕,輸入“C:Parser Generator 2CppInclude”(或你的安裝路徑)。6. 在右上的下拉框中選擇“Library files”,按下面的“New Line (Ctrl-Insert)”按鈕,輸入“C:Parser Generator 2CppLibmsvc32”(或你的安裝路徑)。7. 在右上的下拉框中選擇“Source files”,按下面的

4、“New Line (Ctrl-Insert)”按鈕,輸入“C:Parser Generator 2CppSource”(或你的安裝路徑)。8. 單擊“OK”,保存設(shè)置。l 配置項目1. 在Visual Studio 2005菜單中選擇“File”、“New”、“Project”。2. 左側(cè)選擇“Visual C+”,右側(cè)選擇“Win32 Console Application”,在下面輸入項目名稱(如“my_compiler”),按“OK”。3. 左側(cè)選擇“Application Settings”,右側(cè)清除“Precompiled header”選項。(注:若不去掉,則應(yīng)在LEX/YACC

5、生成的CPP文件前加“#include “stdafx.h”一行文字。)4. 單擊“Finish”創(chuàng)建該項目。5. 菜單中選擇“Project”、“<project name> Properties”打開項目屬性頁。6. 在頂端的“Configuration”中選擇“Active(Debug)”或“Debug”。7. 左側(cè)選擇“Configuration Properties”“C/C+”“Preprocessor”,右側(cè)“Prepocessor Definitions”一項后面添加“;YYDEBUG”。8. 左側(cè)選擇“Configuration Properties”“C/C+”

6、“Code Generation”,右側(cè)“Runtime Library”一項改為“Multi-threaded Debug (/MTd)”。9. 左側(cè)選擇“Configuration Properties”“Linker”“Input”,右側(cè)“Additional Dependencies”一項改為“ylmtd.lib”。10. 點擊“應(yīng)用(A)”保存當前頁設(shè)置。11. 在頂端的“Configuration”中選擇“Active(Release)”或“Release”。12. 左側(cè)選擇“Configuration Properties”“C/C+”“Code Generation”,右側(cè)“R

7、untime Library”一項改為“Multi-threaded(/MT)”。13. 左側(cè)選擇“Configuration Properties”“Linker”“Input”,右側(cè)“Additional Dependencies”一項改為“ylmt.lib”。14. 點擊“確定”保存當前頁設(shè)置。l 編譯項目1. 在Parser Generator中利用菜單“Project”中的“Parser Wizard”創(chuàng)建一個項目,并按“Rebuild All”按鈕將他們編譯為.h/.cpp文件。2. 在Visual Studio 2005的“Solution Explorer”中選中您的項目名,點

8、擊右鍵,選擇“Add”、“Existing Item”,將Parser Generator生成的.h/.cpp文件導(dǎo)入項目。3. 在Visual Studio 2005的“Solution Explorer”中選中“<project name>.cpp”,點擊右鍵,選擇“Remove”,將該文件去除。4. 從工具欄的“Configuration”中選擇“Release”。5. 菜單中選擇“Build”、“Build Solution”,編譯項目。軟件環(huán)境我進行配置的軟件環(huán)境如下:l Windows XP SP2l Microsoft Visual Studio 2005 Profe

9、ssional (Version 8.0.50727.42)l Parser Generator 2.07問題原因經(jīng)過多次實驗,由Parser Generator生成的.h/.cpp文件確實無法直接在Visual Studio 2005中編譯。編譯器返回的錯誤主要為LINK錯誤,包括符號不存在、運行時間庫沖突等問題。我們知道,VS2005的C+編譯器與運行庫較前版本有重大改動(例如去除了單線程版本庫、對DLL版本庫做了修改)由這些錯誤可判斷,問題大致在Parser Generator提供的庫文件中。我們需要利用Parser Generator中的LibBuilder重新編譯這些庫文件。對源代碼

10、進行必要的修改Parser Generator庫的源文件全部位于“Parser Generator 2CppSource”文件夾中,其中共有300多個.c或.cpp文件。其中一部分需要經(jīng)過修改才可以通過VS2005的編譯。l 關(guān)于全局變量初始化。由于C編譯器只允許用常量初始化全局變量,但PG庫中多處用其他全局對象(如stdout)來初始化變量,因此我們需要把這些文件改名。具體方法是將“*var.c”重命名為“*var.cpp”。l 關(guān)于“swprintf”及其它已被廢除函數(shù)的使用。在此版本的C+編譯器中,一些不符合ISO C+標準的函數(shù)已被廢除或修正,其中包括“sprintf”、“swprin

11、tf”等。特別是“swprintf”函數(shù),其行為也發(fā)生了變化。為保證其仍可按照原來的方式工作,我們應(yīng)該通過設(shè)置標識來告訴編譯器。具體方法是在“.Includeyyglobal.h”中添加“#define _CRT_NON_CONFORMING_SWPRINTFS”一行。修改編譯腳本Parser Generator的LibBuilder通過運行一個編譯腳本來完成庫編譯。該編譯腳本位于“Parser Generator 2CppScriptmsvc32.lbs”。由于新C+編譯器及鏈接器參數(shù)的變化,我們需要對該腳本做以下修改。l 通過“查找功能”將第一個“/GZ”參數(shù)改為“/EHsc”(這將用于編

12、譯器)。l 將第二個“/GZ”參數(shù)改為“/RTC1”(這將用于鏈接器)。編譯庫完成了上述準備工作,我們就可以開始編譯Parser Generator庫了。1. 在Parser Generator中從菜單選擇“Project”、“LibBuilder”。2. 只勾選“Visual C+ (32-bit)”一項,并選中該項,按“Properties”按鈕打開屬性框。3. 由于沒有直接提供 8.0的選項,我們進行如下配置:a) Compiler Version: Versoin 7(.NET)b) Unicode: Truec) Treat w_char_t as Build-in Type: Tr

13、ued) Compiler Bin Directory: C:PROGRAM FILESMICROSOFT VISUAL STUDIO 8VCBINe) Compiler Bin Directory(2): C:PROGRAM FILESMICROSOFT VISUAL STUDIO 8COMMON7IDEf) Compiler Include Directory: C:PROGRAM FILESMICROSOFT VISUAL STUDIO 8VCINCLUDEg) Compiler Include Directory(2): C:PROGRAM FILESMICROSOFT VISUAL

14、STUDIO 8VCPLATFORMSDKINCLUDEh) Compiler Library Directory: C:PROGRAM FILESMICROSOFT VISUAL STUDIO 8VCLIBi) Compiler Library Directory(2): C:PROGRAM FILESMICROSOFT VISUAL 8VCPLATFORMSDKLIB4. 按“OK”保存屬性。5. 按“Build”開始編譯所有庫文件。整個編譯過程會接到數(shù)個Warning,主要是提示部分函數(shù)已過時。編譯過程大約會持續(xù)10分鐘。6. 若編譯成功,既可按照本文前面“快速向?qū)А币还?jié)內(nèi)容設(shè)置并使用VS2005和Parser Generator共同開發(fā)了。已知問題以上的解決方案還不甚完善,已知的問題和需要完善的地方如下:l 在編譯庫的過程中仍會接到數(shù)個關(guān)于函數(shù)過時的Warning。因此有必要修改庫的源代碼,使其符合新版C+的相應(yīng)規(guī)則。l 編譯腳本文件“msvc32.lbs”本身已經(jīng)提供了可擴展性,我們可以很容易地將新版本的配置添加到該.lbs文件中,而不應(yīng)該直接修改.lbs文件內(nèi)容。以上問題將在此解決方案的新版本中

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論