日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

通过Daffodil for VS使VS2010的IDE可以用VC6 VC7.1 VC9等编译器进行项目编译

發布時間:2023/12/20 c/c++ 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 通过Daffodil for VS使VS2010的IDE可以用VC6 VC7.1 VC9等编译器进行项目编译 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

通過Daffodil for VS使VS2010的IDE可以用VC6 VC7.1 VC9等編譯器進行項目編譯

本文內容中的部分資料和知識來源于網絡,具體引用出處不明.

VS的IDE從VC6到VS2010的變化可謂是天翻地覆,最新的VS2010有一個特性就是支持多顯示器開發,這無疑為我們的開發帶來很大的便利.

VC的各種版本也都有它自己的特點,像VC6就以速度快著稱.

隨著操作系統的不斷進化,即使是開發人員對新系統的華麗界面也有所動心.我就是 哈哈.

Win7正式發布以來 一直沒太關注,因為之前嘗試過Vista,被各種挫折打敗了.去年開始才算正式踏上了使用Win7的路程

結果 Win7還是挺好用的.不知道Win8正式版發布以后會不會更好用.

系統更新換代對應的軟件和各種工具當然最好是跟上腳步,這樣才算完美.

手里有一份游戲代碼挺大的,不過是VC7.1的工程,一直想以各種手段轉換為VS2008甚至VS2010的,均已各種莫名其妙的bug亂彈告終.

可帶著多臺顯示器做開發,沒有發揮最大用處感覺太浪費了.

上段時間又把VS2008安裝目錄里的include lib都替換成VC7.1的嘗試編譯.結果首先就cl.exe報錯.原因是VS2008的響應文件默認是unicode格式.

改成ansi的后基本不報錯了,但是編譯的時候cl.exe經常會出現假死.原因可能就是部分參數或者響應文件里的部分內容無法被正確識別導致的.

于是再次放棄.

這幾天又開始研究Qt這個開源的GUI庫(這么說有點委屈Qt了,其實Qt不僅僅是一個強大的GUI庫而已,里面還有好多好多值得學習的東西,比如信號/槽模式)

Qt用VS2008 然后那份代碼繼續用VS2003 越來越覺得VS2003那IDE界面太老土了.而且拖動子窗口的時候會變得很卡.

于是又去搜尋解決方案,經過堅持不懈的努力,終于在被GFW墻了無數次之后找到了一篇文章.(其實怪自己不細心,若早點想到VS2010為什么要提供一個"平臺工具集"選項就早找到資料了)

跑題太遠了,進入正題:

VS2010是支持使用不同版本的VC進行編譯的.只是沒太多人研究而已.

首先從http://daffodil.codeplex.com/?下載支持工具進行安裝(開源項目,有興趣可自行研究).

安裝完后會在VS2010項目屬性的"平臺工具集"子項那看到不再是只有之前的v90和v100了,里面出現了從v60 v70 v71 v80 就是對應的vc6 vc7 vc7.1 vc8了

當然如果你系統里已經裝過了這些版本,那直接就可以用了,不用任何額外設置.

下面的情況是針對系統只裝了vs2010的機器

"平臺工具集"每個版本都需要有各自的include lib等文件,默認是從注冊表中進行讀取

這些文件就在已裝VS版本主目錄下的VC目錄里.比如include crt atlmfc lib這些文件夾,可以去別電腦里拷貝過來

另外,編譯時還需要指定版本的bin文件,比如cl.exe link.exe,其中cl.exe還會需要合適的mspdb*.dll(*為特定版本號)等文件

所以還要去Common7目錄下的IDE目錄里去找這些文件.

總之,每個版本有自己的include lib等文件的同時還要保證編譯器 鏈接器等能正常運行就可以了.

這些文件都找齊后,接下來就是修改注冊表能讓VS2010找到我們的文件在哪.

注冊表路徑可以參考C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\PlatformToolsets下面的v**(版本號)目錄里的Microsoft.Cpp.Win32.v**.props文件

該文件就是對VS2010中用到的幾個環境變量進行賦值等操作.常用的有

$(VSInstallDir) ----VS安裝目錄(某些dll需要用到)

$(VCInstallDir) ----VC安裝目錄(include lib文件等)

$(ExecutablePath) ----可執行工具目錄(cl link等)

以VC7.1為例

1 <PlatformToolsetVersion>71</PlatformToolsetVersion> 2 <VCInstallDir>$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\7.1\Setup\VC@ProductDir)</VCInstallDir> 3 <VCInstallDir Condition="'$(VCInstallDir)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\7.1\Setup\VC@ProductDir)</VCInstallDir> 4 <VCInstallDir Condition="'$(VCInstallDir)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VCExpress\7.1\Setup\VC@ProductDir)</VCInstallDir> 5 <VCInstallDir Condition="'$(VCInstallDir)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VCExpress\7.1\Setup\VC@ProductDir)</VCInstallDir> 6 <VSInstallDir>$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\7.1\Setup\VS@ProductDir)</VSInstallDir> 7 <VSInstallDir Condition="'$(VSInstallDir)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\7.1\Setup\VS@ProductDir)</VSInstallDir> 8 <VSInstallDir Condition="'$(VSInstallDir)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VCExpress\7.1\Setup\VS@ProductDir)</VSInstallDir> 9 <VSInstallDir Condition="'$(VSInstallDir)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VCExpress\7.1\Setup\VS@ProductDir)</VSInstallDir> 10 <WindowsSdkDir Condition="'$(WindowsSdkDir)' == ''">$(VCInstallDir)PlatformSDK\</WindowsSdkDir> 11 <FrameworkDir Condition="'$(UseEnv)' != 'true'">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework@InstallRoot)</FrameworkDir> 12 <FrameworkDir Condition="'$(FrameworkDir)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework@InstallRoot)</FrameworkDir> 13 <FrameworkSdkDir Condition="'$(UseEnv)' != 'true'">$(VSInstallDir)SDK\v1.1\</FrameworkSdkDir> 14 <FrameworkVersion Condition="'$(UseEnv)' != 'true'">v1.1.4322.573</FrameworkVersion> 15 <ExecutablePath Condition="'$(ExecutablePath)' == ''">$(VCInstallDir)bin;$(VCInstallDir)PlatformSDK\bin;$(VCInstallDir)PlatformSDK\common\bin;$(VSInstallDir)Common7\Tools\bin;$(VSInstallDir)Common7\tools;$(VSInstallDir)Common7\ide;$(ProgramFiles)\HTML Help Workshop;$(FrameworkSDKDir)bin;$(FrameworkDir)$(FrameworkVersion);$(VSInstallDir);$(SystemRoot)\SysWow64;$(FxCopDir);$(PATH);</ExecutablePath> 16 <IncludePath Condition="'$(IncludePath)' == ''">$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(VCInstallDir)PlatformSDK\include;$(VCInstallDir)PlatformSDK\common\include;$(FrameworkSDKDir)include;</IncludePath> 17 <ReferencePath Condition="'$(ReferencePath)' == ''">$(FrameworkDir)$(FrameworkVersion);$(VCInstallDir)atlmfc\lib;</ReferencePath> 18 <LibraryPath Condition="'$(LibraryPath)' == ''">$(VCInstallDir)lib;$(VCInstallDir)atlmfc\lib;$(VCInstallDir)atlmfc\lib\i386;$(VCInstallDir)PlatformSDK\lib;$(VCInstallDir)PlatformSDK\common\lib;$(FrameworkSDKDir)lib;$(VSInstallDir);$(VSInstallDir)lib;</LibraryPath> 19 <SourcePath Condition="'$(SourcePath)' == ''">$(VCInstallDir)atlmfc\src\mfc;$(VCInstallDir)atlmfc\src\atl;$(VCInstallDir)crt\src;</SourcePath>

綠色粗體部分就是該版本所需要的各種文件的路徑,注意路徑必須以"\"結尾.

$(VSInstallDir) 是從?HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\7.1\Setup\VS?里讀取ProductDir的值

$(VCInstallDir) 是從?HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\7.1\Setup\VC?里讀取ProductDir的值

$(ExecutablePath) 是根據上面的兩個環境變量去設置,里面有?$(VSInstallDir)Common7\ide?說明有可能會用到里面的dll或者exe等可執行文件(實驗中此處是用到了ide里的mspdb80.dll).

這文件是xml格式的語法沒詳細研究的,但不難看出 <VCInstallDir Condition="'$(VCInstallDir)' == ''">*</VCInstallDir> 這一句應該是$(VCInstallDir)這個環境變量為空時才會設置$(VCInstallDir)的值(避免覆蓋已有設置)

這樣就把注冊表里加上我們需要的路徑就可以了.不推薦直接修改本文件,不知道為啥不推薦.....

我把VC6 VC7.1和VC9的平臺工具集打包一下上傳了,還附帶寫了個注冊表腳本可以視情況修改導入.

之所以不制作VC7.0和VC8的工具集,1是電腦上沒裝,2是感覺這三個版本都比較經典.VC6以快著稱 VC7.1折中 VC8和VC9都差不多的.

對了,VC8(VS2005)和更高版本需要注意time_t類型占用空間問題,VC8以下的是32位的,VC8和更高版本默認是64位的,可以定義宏_USE_32BIT_TIME_T來使用32位time_t.

還有,源碼路徑不能有中文,或者最起碼鏈接器生成exe的路徑不能含有中文.否則會提示找不到文件的錯誤.具體原因沒找到.

最后放上下載地址

http://115.com/folder/fbgvmmk7#VS2010平臺工具集

偷懶的直接下

VCPlatformTools.7z

這個文件,里面包含了VC6,VC7.1,VC9的文件和注冊表文件還有一份簡易說明

不想下這么大文件的自己看情況下.

第二篇隨筆,期待自己以后能繼續隨時隨地寫隨筆.

總結

以上是生活随笔為你收集整理的通过Daffodil for VS使VS2010的IDE可以用VC6 VC7.1 VC9等编译器进行项目编译的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。