青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-341  評論-2670  文章-0  trackbacks-0
    GacUI終于進(jìn)入制作dll的階段了。昨天上傳了一個新的工程,在Vczh Library++3.0(E:\Codeplex\vlpp\Workspace\Tools\Release\SideProjects\GacUI\GacUI.sln)。這里面一共有三個工程,有兩個是工具,一個是dll。

    為了編譯出帶反射的控件庫,因此每一個控件都可以獲得一個ITypeDescriptor對象。但是控件庫一共有幾十個類上千個函數(shù),我不可能一個一個去實現(xiàn)的(請想想實現(xiàn)IDispatcher的時候)。根據(jù)上一篇博客討論過技術(shù),我將使用一個程序來讀pdb生成C++代碼。詳細(xì)的計劃如下:

    1:制作一個_GacPDB工程。這是一個exe,但是是沒用的,唯一的用處就是他引用了GacUI.dll所需要的所有源代碼,然后靠編譯器產(chǎn)生PDB文件。
    2:制作一個_TranslatePDBtoXML工程。這是一個exe,從PDB抽取類聲明。
    3:制作一個_TranslateXMltoCode。顧名思義,不過現(xiàn)在還沒做,原理是一樣的。
    4:GacUI.dll。這個dll包含了所有的控件的實現(xiàn),還有_TranslateXMLtoCode產(chǎn)生的所有代碼。

    現(xiàn)在我的目標(biāo)是,先編譯_Translate*工程,然后編譯_GacPDB產(chǎn)生pdb后自動調(diào)用它們,生成代碼結(jié)束之后開始合并編譯GacUI.dll。所有的這些東西都需要在VisualStudio的“Rebuild Solution”里面完成。為了完成這個目標(biāo),我創(chuàng)建這些工程之后,按照下面的方法修改了工程屬性:
 1 _TranslatePDBtoXML:
 2     post build action:
 3         copy $(ProjectDir)msdia100.dll $(SolutionDir)$(Configuration)\msdia100.dll
 4 _GenPDB:
 5     references:
 6         _TranslatePDBtoXML
 7     post build action:
 8         $(SolutionDir)$(Configuration)\_TranslatePDBtoXML.exe $(SolutionDir)Debug\_GenPDB.pdb $(SolutionDir)_GenPDB.xml
 9 GacUI:
10     references:
11         _GenPDB

    1:工程A引用了工程B的話,那么只有當(dāng)B完全編譯好之后才會編譯A。因此上面的配置將阻止三個工程平行編譯,強(qiáng)制他們按照_TranslatePDBtoXML、_GenPDB和GacUI的順序來。
    2:_TranslatePDBtoXML編譯好之后,會把它依賴的msdia100.dll復(fù)制到編譯出來的exe旁邊,以供接下來調(diào)用。
    3:_GenPDB編譯好之后,pdb已經(jīng)產(chǎn)生了。這個時候它會自動調(diào)用上一步編譯出來的_TranslatePDBtoXML,讀取pdb,輸出xml
    4:(接下來要做的)調(diào)用_TranslateXMLtoCode,輸入xml,輸出C++代碼
    5:這個時候,生成的C++代碼已經(jīng)就緒了,所以開始編譯GacUI。

    附加的好處還有一個。因為_GenPDB引用了GacUI的cpp,所以當(dāng)GacUI的源代碼修改的時候,_GenPDB也會感應(yīng)到,從而在下次編譯GacUI的時候先開始編譯_GenPDB。并且因為GacUI依賴了_GenPDB,所以_GenPDB仍然會先編譯。而且這種依賴關(guān)系是無害的,因為_GenPDB沒有輸出lib,因此GacUI.dll在運行的時候完全不需要_GenPDB.exe的存在。

    好了。那把一個個的cpp文件添加到_GenPDB也是在太麻煩了,所以我投機(jī)取巧了一下:
 1 #include "..\..\..\..\..\Candidate\GUI\GUI\Controls\GuiApplication.cpp"
 2 #include "..\..\..\..\..\Candidate\GUI\GUI\Controls\GuiBasicControls.cpp"
 3 #include "..\..\..\..\..\Candidate\GUI\GUI\Controls\GuiListControls.cpp"
 4 #include "..\..\..\..\..\Candidate\GUI\GUI\Controls\GuiTextControls.cpp"
 5 #include "..\..\..\..\..\Candidate\GUI\GUI\Controls\GuiWindowControls.cpp"
 6 //---------------------------------------------------------------
 7 #include "..\..\..\..\..\Candidate\GUI\GUI\Controls\ExtendedControls\GuiComboControls.cpp"
 8 #include "..\..\..\..\..\Candidate\GUI\GUI\Controls\ExtendedControls\GuiContainerControls.cpp"
 9 #include "..\..\..\..\..\Candidate\GUI\GUI\Controls\ExtendedControls\GuiListViewControls.cpp"
10 #include "..\..\..\..\..\Candidate\GUI\GUI\Controls\ExtendedControls\GuiMenuControls.cpp"
11 #include "..\..\..\..\..\Candidate\GUI\GUI\Controls\ExtendedControls\GuiTextListControls.cpp"
12 #include "..\..\..\..\..\Candidate\GUI\GUI\Controls\ExtendedControls\GuiTreeViewControls.cpp"
13 //---------------------------------------------------------------
14 #include "..\..\..\..\..\Candidate\GUI\GUI\Controls\Styles\GuiCommonStyles.cpp"
15 #include "..\..\..\..\..\Candidate\GUI\GUI\Controls\Styles\GuiWin7Styles.cpp"
16 //---------------------------------------------------------------
17 #include "..\..\..\..\..\Candidate\GUI\GUI\GraphicsElement\GuiGraphicsComposition.cpp"
18 #include "..\..\..\..\..\Candidate\GUI\GUI\GraphicsElement\GuiGraphicsElement.cpp"
19 #include "..\..\..\..\..\Candidate\GUI\GUI\GraphicsElement\GuiGraphicsEventReceiver.cpp"
20 #include "..\..\..\..\..\Candidate\GUI\GUI\GraphicsElement\GuiGraphicsHost.cpp"
21 #include "..\..\..\..\..\Candidate\GUI\GUI\GraphicsElement\GuiGraphicsTextElement.cpp"
22 //---------------------------------------------------------------
23 #include "..\..\..\..\..\Candidate\GUI\GUI\NativeWindow\GuiNativeWindow.cpp"
24 #include "..\..\..\..\..\Candidate\GUI\GUI\NativeWindow\Windows\WinNativeWindow.cpp"
25 //---------------------------------------------------------------
26 #include "..\..\..\..\..\Candidate\GUI\GUI\Reflection\GuiTypeDescriptor.cpp"
27 //---------------------------------------------------------------
28 #include "..\..\..\..\..\Library\Basic.cpp"
29 #include "..\..\..\..\..\Library\Exception.cpp"
30 #include "..\..\..\..\..\Library\String.cpp"
31 #include "..\..\..\..\..\Library\Threading.cpp"
32 #include "..\..\..\..\..\Library\Collections\Operation.cpp"
33 //---------------------------------------------------------------
34 #include <Windows.h>
35 
36 int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int CmdShow)
37 {
38     return 0;
39 }

    啊哈哈哈哈(拖走

    VisualStudio的功能是強(qiáng)大的。只要善于使用,或者配合MSBuild,所起到的威力將毫不亞于某些著名工具鏈。而且VisualStudio編譯器產(chǎn)生的文件,基本上VisualStudio都有提供API供你閱讀,所以也可以做很多事情,譬如我這篇文章說的這樣,充當(dāng)了一個編譯器的擴(kuò)展,而且完美集成。
posted on 2012-01-13 22:09 陳梓瀚(vczh) 閱讀(7449) 評論(7)  編輯 收藏 引用 所屬分類: C++實用技巧 、GacUI

評論:
# re: 使用VisualStudio完成自動化C++代碼生成和編譯工作(GacUI) 2012-01-13 22:58 | 空明流轉(zhuǎn)
睪手啊,膜拜??!師祖威武啊!  回復(fù)  更多評論
  
# re: 使用VisualStudio完成自動化C++代碼生成和編譯工作(GacUI) 2012-01-14 02:57 | ArthasLee
想到了以后我要include的東西就有這么多,真是瞬間崩潰了。。。  回復(fù)  更多評論
  
# re: 使用VisualStudio完成自動化C++代碼生成和編譯工作(GacUI) 2012-01-14 03:55 | 陳梓瀚(vczh)
@ArthasLee
只要include GacUI.dll提供的一個h文件就好了!  回復(fù)  更多評論
  
# re: 使用VisualStudio完成自動化C++代碼生成和編譯工作(GacUI) 2012-01-15 06:15 | ccsdu2009
@陳梓瀚(vczh)
這篇有打廣告的嫌疑
哈哈  回復(fù)  更多評論
  
# re: 使用VisualStudio完成自動化C++代碼生成和編譯工作(GacUI) 2012-01-15 09:29 | 春秋十一月
很好很強(qiáng)大  回復(fù)  更多評論
  
# re: 使用VisualStudio完成自動化C++代碼生成和編譯工作(GacUI)[未登錄] 2012-01-15 18:35 | diryboy
好威武!  回復(fù)  更多評論
  
# re: 使用VisualStudio完成自動化C++代碼生成和編譯工作(GacUI) 2013-02-07 23:04 | 歲月漫步
很不錯啊  回復(fù)  更多評論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美激情一级片一区二区| 亚洲天堂av图片| 欧美视频在线不卡| 免费久久99精品国产自| 欧美v日韩v国产v| 欧美另类视频| 国产精品免费福利| 国产色爱av资源综合区| 黄色成人在线网址| 亚洲三级影院| 欧美夜福利tv在线| 麻豆亚洲精品| 99av国产精品欲麻豆| 亚洲欧美日产图| 久久久久久综合网天天| 欧美日韩视频在线观看一区二区三区| 国产精品国产精品| 尤妮丝一区二区裸体视频| 99精品欧美| 久久精品亚洲国产奇米99| 亚洲第一中文字幕| 亚洲精品之草原avav久久| 亚洲欧洲av一区二区| 欧美好吊妞视频| 国产原创一区二区| 日韩亚洲综合在线| 日韩视频永久免费观看| 亚洲视屏在线播放| 久久另类ts人妖一区二区| 亚洲国产黄色| 欧美一区二区三区在线观看| 欧美日韩国产专区| 国产一区二区三区电影在线观看| 亚洲精品欧美精品| 久久蜜桃资源一区二区老牛| 亚洲国产精品久久久久| 午夜精品网站| 欧美日韩一区二区三| 亚洲国产另类 国产精品国产免费| 亚洲欧美日韩天堂一区二区| 亚洲福利在线看| 久久午夜精品| 国产亚洲欧美一区二区| 亚洲欧美视频在线| 亚洲精品少妇30p| 欧美福利一区二区| 狠狠色伊人亚洲综合成人| 亚洲欧美一区二区三区在线 | 国产一区二区日韩精品| 亚洲视频一区二区| 亚洲欧洲综合另类在线| 久久亚洲一区| 樱桃国产成人精品视频| 久久久国产一区二区| 亚洲欧美另类综合偷拍| 国产精品推荐精品| 亚洲欧美制服另类日韩| 亚洲一区视频在线| 国产精品一区二区三区四区五区| 亚洲午夜久久久久久久久电影院| 亚洲精品偷拍| 国产精品a久久久久| 亚洲永久网站| 亚洲欧美福利一区二区| 国产欧美日韩一级| 久久久国产午夜精品| 久久精品亚洲精品| 亚洲电影下载| 亚洲国产精品成人va在线观看| 久久久噜噜噜久久久| 亚洲激情影视| 亚洲伦理在线观看| 欧美午夜不卡在线观看免费| 午夜在线成人av| 欧美一级淫片播放口| 在线电影一区| 最新69国产成人精品视频免费| 欧美日韩国产系列| 欧美在线影院在线视频| 久久综合狠狠| 亚洲已满18点击进入久久| 欧美一区二区私人影院日本| 亚洲国产高清在线观看视频| av成人激情| 噜噜噜噜噜久久久久久91| 欧美高清在线播放| 亚洲欧美精品一区| 欧美一区二区黄| 久久综合久久综合久久| 欧美不卡三区| 午夜日韩在线观看| 久久久九九九九| 一区二区三区国产精华| 亚洲欧美日韩天堂| 亚洲国产一区在线| 亚洲无限av看| 亚洲国产精品热久久| 亚洲伦理在线免费看| 国产视频在线一区二区| 亚洲国产精品成人va在线观看| 国产精品免费看片| 91久久国产综合久久蜜月精品 | 久久综合久久综合久久| 一区二区三欧美| 欧美一区二区三区免费看| 亚洲精品国精品久久99热一| 亚洲欧美美女| 在线视频你懂得一区二区三区| 久久精品久久99精品久久| 在线综合视频| 农村妇女精品| 久久婷婷国产麻豆91天堂| 欧美三级电影精品| 欧美激情一二三区| 国语自产精品视频在线看一大j8 | 久久影院午夜片一区| 欧美一区二区免费观在线| 免费在线观看成人av| 久久久久欧美精品| 国产精品网站在线| 在线性视频日韩欧美| 日韩视频一区二区三区在线播放| 久久久久成人精品| 久久久久国色av免费看影院| 国产精品美腿一区在线看| 99精品国产高清一区二区| 亚洲蜜桃精久久久久久久| 美国三级日本三级久久99| 麻豆成人在线| 激情成人综合| 久久精品五月| 久久久中精品2020中文| 国内精品久久久久久| 欧美中文字幕| 另类天堂av| 亚洲电影免费| 欧美激情视频给我| 日韩视频精品在线| 亚洲男人的天堂在线观看| 国产精品视频| 久久精品国产亚洲高清剧情介绍| 性色av一区二区三区| 国产精品亚洲综合色区韩国| 亚洲一区二区三区色| 羞羞答答国产精品www一本| 国产精品日韩在线观看| 小黄鸭精品密入口导航| 黑人操亚洲美女惩罚| 亚洲午夜精品视频| 欧美日韩综合另类| 亚洲一区在线观看免费观看电影高清| 中国日韩欧美久久久久久久久| 欧美日韩国产影片| 亚洲一区二区三区免费观看 | 一区二区三区国产精品| 午夜精品久久99蜜桃的功能介绍| 国产精品网站一区| 久久激情五月丁香伊人| 欧美91视频| 一区二区三区日韩在线观看| 亚洲综合视频网| 韩国一区二区三区在线观看| 久久综合九色99| 在线亚洲高清视频| 欧美jjzz| 亚洲男人av电影| 亚洲第一页在线| 国产精品久久久久久久久免费樱桃| 午夜一区不卡| 91久久香蕉国产日韩欧美9色| 亚洲精品久久久久久一区二区| 久久久爽爽爽美女图片| 欧美激情亚洲激情| 欧美综合二区| 日韩一区二区精品| 国内精品久久久久影院优| 欧美大片免费观看| 欧美一区二区三区久久精品茉莉花 | 欧美理论在线播放| 亚洲精品视频在线观看免费| 久久另类ts人妖一区二区| 一区二区三区精品在线| 国产亚洲一区在线| 欧美日韩国产精品自在自线| 久久黄金**| 亚洲一区免费在线观看| 亚洲国产精品成人va在线观看| 久久爱www久久做| 亚洲天堂av电影| 亚洲精品日韩综合观看成人91| 国产日韩在线亚洲字幕中文| 欧美日本一区二区高清播放视频| 欧美主播一区二区三区美女 久久精品人| 亚洲国产精品www| 免费欧美电影| 久久久91精品国产一区二区精品| 亚洲一区二区精品在线观看| 亚洲国产精品一区二区第四页av| 国产欧美一区二区视频| 国产精品wwwwww|