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

S.l.e!ep.¢%

像打了激速一樣,以四倍的速度運轉,開心的工作
簡單、開放、平等的公司文化;尊重個性、自由與個人價值;
posts - 1098, comments - 335, trackbacks - 0, articles - 1
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

在vs2008下編譯eMule-VeryCD工程

Posted on 2009-08-22 17:51 S.l.e!ep.¢% 閱讀(1198) 評論(0)  編輯 收藏 引用 所屬分類: VC

2008-09-04

版權聲明 :轉載時請以超鏈接形式標明文章原始出處和作者信息及本聲明
http://jiangliwei.blogbus.com/logs/28509863.html

代碼來源:
官方eMule-VeryCD源碼包
http://download.verycd.com/eMule-VeryCD-src.rar
編譯好的第三方庫,來http://www.verycd.com/groups/eMuleDev/209863.topic
http://download.VeryCD.com/emule071112_libsForVS2005.rar

編譯環境:
WindowsXPsp3CN
VC2008EN + SP1
ATL Server??????? ????????http://www.codeplex.com/AtlServer

修改過程:(只修改error的部分,警告看著不爽自己整)
1. 解壓縮源碼包,其中src目錄下為emule源碼。
2. vs2008打開emule.sln,首先是轉換工程向導,轉換之。
3. 首次build,會提示你如下錯誤。
1>C:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include\..\src\mfc\afximpl.h(631) : error C2059: syntax error : '<L_TYPE_raw>'
1>C:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include\..\src\mfc\afximpl.h(631) : error C2238: unexpected token(s) preceding ';'
1>C:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include\..\src\mfc\afximpl.h(635) : error C2059: syntax error : '<L_TYPE_raw>'
1>C:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include\..\src\mfc\afximpl.h(635) : error C2238: unexpected token(s) preceding ';'


這個錯誤是由于WINVER定義不正確造成的,編輯stdafx.h,更改代碼如下:
#ifndef WINVER
#define WINVER 0x0501
#endif

#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0501
#endif

4. 重新build,又會有一大坨error,其中最多的是
error C2011: 'tagMENUINFO' : 'struct' type redefinition
結構重復定義,查看winuser.h就會發現如下定義

#if(WINVER >= 0x0500)
...
typedef struct tagMENUINFO
{
DWORD cbSize;
DWORD fMask;
DWORD dwStyle;
UINT cyMax;
HBRUSH hbrBack;
DWORD dwContextHelpID;
ULONG_PTR dwMenuData;
} MENUINFO, FAR *LPMENUINFO;
typedef MENUINFO CONST FAR *LPCMENUINFO;
還是WINVER的問題,編輯TitleMenu.h,更改代碼如下:
#if (WINVER < 0x0500)
typedef struct tagMENUINFO
{
DWORD cbSize;
DWORD fMask;
DWORD dwStyle;
UINT cyMax;
HBRUSH hbrBack;
DWORD dwContextHelpID;
ULONG_PTR dwMenuData;
} MENUINFO, FAR *LPMENUINFO;
typedef MENUINFO CONST FAR *LPCMENUINFO;
#endif
或者直接注釋掉也可以

5. 重新build(很可能你改完了上面的代碼后,上一次build仍沒有結束,要毫不猶豫地cancel),再次出現一大坨error,總共有兩類()
1>.\UPnpNat.cpp(706) : error C2440: '=' : cannot convert from 'const char *' to 'char *'

1>.\SharedFilesCtrl.cpp(585) : error C2039: 'bWin95' : is not a member of 'AUX_DATA'
1> C:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include\..\src\mfc\afximpl.h(54) : see declaration of 'AUX_DATA'
1>SearchListCtrl.cpp
1>.\SearchListCtrl.cpp(1729) : error C2039: 'bWin95' : is not a member of 'AUX_DATA'
1> C:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\include\..\src\mfc\afximpl.h(54) : see declaration of 'AUX_DATA'


其中第一個很好改,強制轉換類型即可。
至于第二種錯誤,AUX_DATA中已不再包含成員bWin95,如有需要參與運算的部分則bWin95=0,具體請自行google。
這個改起來也很容易,將所有bWin95的部分注釋掉即可,其多半是參與if判斷,需要的地方統統取FALSE即可。涉及到的文件共有14個

修改舉例
lf.lfQuality = afxData.bWin95 ? NONANTIALIASED_QUALITY : ANTIALIASED_QUALITY;
改為
lf.lfQuality = ANTIALIASED_QUALITY;

if (!afxData.bWin95 && iItem >= 0)
改為
if (iItem >= 0)

6. 改好之后再次build,出現4條error
>.\EncryptedStreamSocket.cpp(361) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>.\EncryptedStreamSocket.cpp(492) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>.\EncryptedStreamSocket.cpp(590) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

1>.\Emule.cpp(314) : fatal error C1189: #error : "You are using an MFC version which may require a special version of the above function!"

前三條純粹是寫法不正確,變量前面竟然沒有寫類型,為之一一補充上即可。
第二種是宏警告,意思是VS版本不正確之類的。在其前面的條件中補充上
|| _MFC_VER==0x0900
即可,總共有2處

7. 再次build,這次出現的錯誤算是比較常見的,不再列舉
去掉stdafx.h里的以下幾行
#ifndef _USE_32BIT_TIME_T
#define _USE_32BIT_TIME_T
#endif

8. build, 提示link錯誤
ResizableLib.lib(ResizableDialog.obj) : error LNK2019: unresolved external symbol "public: class CMenu * __thiscall CWnd::GetMenu(void)const " (?GetMenu@CWnd@@QBEPAVCMenu@@XZ) referenced in function "protected: int __thiscall CResizableDialog::OnCreate(struct tagCREATESTRUCTW *)" (?OnCreate@CResizableDialog@@IAEHPAUtagCREATESTRUCTW@@@Z)
ResizableLib.lib(ResizableSheet.obj) : error LNK2001: unresolved external symbol "public: class CMenu * __thiscall CWnd::GetMenu(void)const " (?GetMenu@CWnd@@QBEPAVCMenu@@XZ)
ResizableLib.lib(ResizableSheet.obj) : error LNK2019: unresolved external symbol "public: long __thiscall CWnd::SendMessageW(unsigned int,unsigned int,long)" (?SendMessageW@CWnd@@QAEJIIJ@Z) referenced in function "public: void __thiscall CResizableSheet::RefreshLayout(void)" (?RefreshLayout@CResizableSheet@@QAEXXZ)

這里說明一下,emule的源碼目錄中,其他幾個像ResizableLib,crypto51是其所依賴的第三方庫,跟emule工程一樣需要重新轉換并編譯。但是為了省事起見,這里直接使用了他人編譯好的lib庫(在前面有說明)。但是盡管如此,有一部分還是需要重新編譯一下的。
需要重新轉換并編譯ResizableLib這個工程,然后在工程屬性里面將Debug和Release的”Chartacter Set“設置為“Use Unicode Character Set”,rebuild之后將生成的ResizableLib.lib分別copy至DebugUnicode和ReleaseUnicode目錄(修改工程屬性直接生成到這兩個目錄里也是一樣的)。
再次編譯emule工程即可通過。

另外需補充一點,VS2008如果沒裝sp1補丁有一個地方遍不過去,因為懶得查,我就忽略了。
再有,VS2008默認安裝時沒有包括ATLServer庫(現在已開源)的,需要去官方下載,解壓后制定inc的路徑即可。

至此大功告成,其余的部分請自行研究吧。我也是剛剛開始看emule的源碼,因為遍不過去無法調試,很不爽,所以多花了點時間研究一下,如果有什么不正確或需要補充的地方請與我聯系。

收藏到:Del.icio.us

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲欧美日韩国产成人精品影院| 欧美电影在线观看| 精品不卡视频| 欧美精品亚洲精品| 亚洲午夜精品17c| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美日韩精品在线播放| 国产亚洲精品福利| 久久久www成人免费无遮挡大片| 久久久久综合| 亚洲精品日韩精品| 夜夜嗨一区二区| 国产精品每日更新在线播放网址| 女女同性女同一区二区三区91| 国产日韩欧美一区二区三区在线观看 | 午夜精品一区二区三区在线| 老司机aⅴ在线精品导航| 欧美精品精品一区| 国产一区二区高清| 狠狠干狠狠久久| 国产农村妇女精品一二区| 国产精品久久婷婷六月丁香| 欧美在线观看日本一区| 久久夜色精品国产欧美乱极品| 欧美一区二区视频在线观看| 欧美日本一道本| 欧美一区二区久久久| 国产精品va在线| 久久国产日韩| 久久久综合精品| 欧美v日韩v国产v| 欧美成年网站| 国产一区二区剧情av在线| 欧美激情区在线播放| 亚洲精品视频在线观看免费| 国产麻豆综合| 一区二区三区产品免费精品久久75 | 国产精品视频免费观看www| 亚洲黄色成人| 99精品视频一区二区三区| 亚洲欧洲一区二区在线观看| 99视频在线精品国自产拍免费观看 | 欧美视频在线观看 亚洲欧| 国产精品超碰97尤物18| 国产亚洲精品福利| 亚洲视频欧美在线| 女人天堂亚洲aⅴ在线观看| 欧美一区二区视频观看视频| 欧美xx视频| 国产日韩精品久久| 欧美日韩综合另类| 国产精品久久久久久影视| 久久国产精品亚洲va麻豆| 亚洲午夜视频在线| 91久久久久久久久久久久久| 欧美日韩性生活视频| 一区二区欧美国产| 欧美国产日韩xxxxx| 亚洲国产精品激情在线观看| 欧美日韩色婷婷| 久热国产精品视频| 欧美激情综合在线| 国产欧美日韩精品专区| 午夜免费在线观看精品视频| 亚洲午夜精品在线| 狠狠狠色丁香婷婷综合激情| 欧美在线日韩在线| 欧美精品久久久久a| 国产美女精品免费电影| 亚洲精品欧美日韩| 亚洲第一伊人| 亚洲激情欧美激情| 亚洲第一在线综合网站| 亚洲一级二级| 亚洲激情av| 亚洲欧美中文字幕| 久久网站免费| 亚洲自拍偷拍视频| 嫩草伊人久久精品少妇av杨幂| 欧美日韩黄视频| 亚洲男同1069视频| 免费不卡在线视频| 久久gogo国模裸体人体| 欧美激情aⅴ一区二区三区| 午夜欧美大片免费观看 | 男女视频一区二区| 国产精品劲爆视频| 夜夜嗨av一区二区三区四季av| 伊人久久av导航| 亚洲精品欧美精品| 久久久欧美精品| 亚洲欧洲三级| 亚洲精品一级| 美女脱光内衣内裤视频久久影院| 一本到高清视频免费精品| 久久久久国产精品一区二区| 久久综合五月| 欧美人与禽猛交乱配| 国产精品jvid在线观看蜜臀| 亚洲综合丁香| 欧美成在线观看| 欧美成人一品| 久久久久久久久久久久久久一区| 欧美一区二区视频97| 国产欧美日韩视频| 亚洲男人av电影| 欧美一二三区在线观看| 国产精品黄色| 久久激情视频久久| 久久疯狂做爰流白浆xx| 欧美日韩免费一区| 夜夜爽夜夜爽精品视频| 91久久精品美女| 久久国产福利国产秒拍| 国产日韩欧美亚洲| 卡通动漫国产精品| 欧美成人国产va精品日本一级| 在线观看国产成人av片| 久久精品国产99精品国产亚洲性色| 亚洲国产欧美一区二区三区丁香婷| 欧美精品国产精品日韩精品| 亚洲午夜一区二区| 老司机精品福利视频| 亚洲人成啪啪网站| 欧美电影在线观看| 久久er精品视频| 亚洲女同精品视频| 国产一区 二区 三区一级| 欧美成人xxx| 女仆av观看一区| 久久久亚洲高清| 久久亚洲高清| 免费欧美在线| 麻豆精品视频在线观看| 久久亚洲风情| 欧美精品一区二区三| 美女精品国产| 欧美日韩一区二区在线视频| 亚洲欧美在线另类| 亚洲欧美日产图| 欧美一级淫片aaaaaaa视频| 久久av二区| 欧美激情综合色| 国产欧美精品| 亚洲国产精品一区在线观看不卡| 在线免费观看日本一区| 99国产精品久久久久老师| 亚洲天堂av图片| 性高湖久久久久久久久| 久久久久久夜精品精品免费| 欧美freesex交免费视频| 久久久91精品| 亚洲欧洲日韩女同| 亚洲欧美成人在线| 美日韩精品视频| 国产精品美女久久久久aⅴ国产馆| 欧美另类在线播放| 久久麻豆一区二区| 欧美—级a级欧美特级ar全黄| 一区二区激情视频| 欧美一区2区三区4区公司二百| 欧美 日韩 国产在线| 亚洲欧美综合另类中字| 欧美黄色一区二区| 亚洲国产精品va| 卡一卡二国产精品| 99国产精品久久久久久久久久 | 欧美日韩国产一区精品一区| 亚洲黄色毛片| 亚洲理伦在线| 免费成人在线视频网站| 午夜综合激情| 国产在线日韩| 一区二区三区四区五区视频| 久久久久国产精品一区二区| 99国产精品久久久久久久久久| 欧美sm视频| 亚洲视频网站在线观看| 在线一区二区三区做爰视频网站| 欧美日韩mp4| 亚洲天堂成人| 欧美大尺度在线观看| 久久精品卡一| 亚洲精品视频在线| 亚洲一级网站| 欲香欲色天天天综合和网| 欧美成人第一页| 欧美日韩一级片在线观看| 欧美专区在线观看| 国产精品入口夜色视频大尺度| 久久久欧美一区二区| 欧美美女福利视频| 久久综合亚州| 欧美午夜一区| 一区二区免费在线播放| 亚洲福利专区| 欧美在线短视频| 亚洲一区二区久久| 亚洲男女自偷自拍图片另类| 亚洲一区精品在线|