先研究下這個,吼吼。夠研究一段時間的了。
電驢:http://sourceforge.net/projects/emule/
電驢源碼分析:
http://blog.csdn.net/ruibird/category/273392.aspx?PageNumber=2
http://www.ppgod.com/thread.php?fid-20.html
BT & eMule
http://mail.ustc.edu.cn/~ltguo/2005/12/bt_emule.html
2007-10-09
研究了下,復雜度不是一般的高,基本上mission impossible.
還是先做這件事情比較實在,把某些pak包里的一堆小文件合成一個文件,這樣子更新服務器上就沒有那么多一個個的小文件了,防止玩家頻繁的建立連接。
老子想編譯下emule,結果一堆的第三方庫,奶奶的!
初見成果,現在只剩下下面的問題了:
------ 已啟動生成: 項目: emule, 配置: Debug Win32 ------
正在鏈接
IPFilterDlg.obj : error LNK2001: 無法解析的外部符號 "protected: void __thiscall CResizableDialog::EnableSaveRestore(wchar_t const *,int)" (?EnableSaveRestore@CResizableDialog@@IAEXPB_WH@Z)
NetworkInfoDlg.obj : error LNK2019: 無法解析的外部符號 "protected: void __thiscall CResizableDialog::EnableSaveRestore(wchar_t const *,int)" (?EnableSaveRestore@CResizableDialog@@IAEXPB_WH@Z) ,該符號在函數 "void __cdecl CreateNetworkInfo(class CRichEditCtrlX &,struct _charformatw &,struct _charformatw &,bool)" (?CreateNetworkInfo@@YAXAAVCRichEditCtrlX@@AAU_charformatw@@1_N@Z) 中被引用
AddSourceDlg.obj : error LNK2019: 無法解析的外部符號 "protected: void __thiscall CResizableDialog::EnableSaveRestore(wchar_t const *,int)" (?EnableSaveRestore@CResizableDialog@@IAEXPB_WH@Z) ,該符號在函數 "protected: virtual int __thiscall CAddSourceDlg::OnInitDialog(void)" (?OnInitDialog@CAddSourceDlg@@MAEHXZ) 中被引用
CollectionCreateDialog.obj : error LNK2019: 無法解析的外部符號 "protected: void __thiscall CResizableDialog::EnableSaveRestore(wchar_t const *,int)" (?EnableSaveRestore@CResizableDialog@@IAEXPB_WH@Z) ,該符號在函數 "unsigned int __stdcall ATL::_AtlGetThreadACPThunk(void)" (?_AtlGetThreadACPThunk@ATL@@YGIXZ) 中被引用
CollectionViewDialog.obj : error LNK2001: 無法解析的外部符號 "protected: void __thiscall CResizableDialog::EnableSaveRestore(wchar_t const *,int)" (?EnableSaveRestore@CResizableDialog@@IAEXPB_WH@Z)
DirectDownloadDlg.obj : error LNK2001: 無法解析的外部符號 "protected: void __thiscall CResizableDialog::EnableSaveRestore(wchar_t const *,int)" (?EnableSaveRestore@CResizableDialog@@IAEXPB_WH@Z)
SharedFilesCtrl.obj : error LNK2001: 無法解析的外部符號 "protected: void __thiscall CResizableSheet::EnableSaveRestore(wchar_t const *,int,int)" (?EnableSaveRestore@CResizableSheet@@IAEXPB_WHH@Z)
ClientDetailDialog.obj : error LNK2019: 無法解析的外部符號 "protected: void __thiscall CResizableSheet::EnableSaveRestore(wchar_t const *,int,int)" (?EnableSaveRestore@CResizableSheet@@IAEXPB_WHH@Z) ,該符號在函數 "protected: virtual int __thiscall CClientDetailDialog::OnInitDialog(void)" (?OnInitDialog@CClientDetailDialog@@MAEHXZ) 中被引用
FileDetailDialog.obj : error LNK2001: 無法解析的外部符號 "protected: void __thiscall CResizableSheet::EnableSaveRestore(wchar_t const *,int,int)" (?EnableSaveRestore@CResizableSheet@@IAEXPB_WHH@Z)
CollectionListCtrl.obj : error LNK2001: 無法解析的外部符號 "protected: void __thiscall CResizableSheet::EnableSaveRestore(wchar_t const *,int,int)" (?EnableSaveRestore@CResizableSheet@@IAEXPB_WHH@Z)
SearchListCtrl.obj : error LNK2001: 無法解析的外部符號 "protected: void __thiscall CResizableSheet::EnableSaveRestore(wchar_t const *,int,int)" (?EnableSaveRestore@CResizableSheet@@IAEXPB_WHH@Z)
DialogMinTrayBtn.obj : error LNK2019: 無法解析的外部符號 "public: __thiscall CResizableDialog::CResizableDialog(wchar_t const *,class CWnd *)" (??0CResizableDialog@@QAE@PB_WPAVCWnd@@@Z) ,該符號在函數 "public: __thiscall CDialogMinTrayBtn<class CResizableDialog>::CDialogMinTrayBtn<class CResizableDialog>(wchar_t const *,class CWnd *)" (??0?$CDialogMinTrayBtn@VCResizableDialog@@@@QAE@PB_WPAVCWnd@@@Z) 中被引用
ListViewWalkerPropertySheet.obj : error LNK2019: 無法解析的外部符號 "public: __thiscall CResizableSheet::CResizableSheet(wchar_t const *,class CWnd *,unsigned int)" (??0CResizableSheet@@QAE@PB_WPAVCWnd@@I@Z) ,該符號在函數 "public: __thiscall CListViewWalkerPropertySheet::CListViewWalkerPropertySheet(wchar_t const *,class CWnd *,unsigned int)" (??0CListViewWalkerPropertySheet@@QAE@PB_WPAVCWnd@@I@Z) 中被引用
cryptlib.lib(integer.obj) : error LNK2019: 無法解析的外部符號 "public: unsigned int * __thiscall CryptoPP::AlignedAllocator<unsigned int>::allocate(unsigned int,void const *)" (?allocate@?$AlignedAllocator@I@CryptoPP@@QAEPAIIPBX@Z) ,該符號在函數 "public: __thiscall CryptoPP::SecBlock<unsigned int,class CryptoPP::AlignedAllocator<unsigned int> >::SecBlock<unsigned int,class CryptoPP::AlignedAllocator<unsigned int> >(unsigned int)" (??0?$SecBlock@IV?$AlignedAllocator@I@CryptoPP@@@CryptoPP@@QAE@I@Z) 中被引用
Debug/emule.exe : fatal error LNK1120: 5 個無法解析的外部命令
生成日志保存在“file://d:\soft\code\eMule0.48a-Sources\srchybrid\Debug\BuildLog.htm”中
emule - 15 錯誤,0 警告
正在鏈接

IPFilterDlg.obj : error LNK2001: 無法解析的外部符號 "protected: void __thiscall CResizableDialog::EnableSaveRestore(wchar_t const *,int)" (?EnableSaveRestore@CResizableDialog@@IAEXPB_WH@Z)
NetworkInfoDlg.obj : error LNK2019: 無法解析的外部符號 "protected: void __thiscall CResizableDialog::EnableSaveRestore(wchar_t const *,int)" (?EnableSaveRestore@CResizableDialog@@IAEXPB_WH@Z) ,該符號在函數 "void __cdecl CreateNetworkInfo(class CRichEditCtrlX &,struct _charformatw &,struct _charformatw &,bool)" (?CreateNetworkInfo@@YAXAAVCRichEditCtrlX@@AAU_charformatw@@1_N@Z) 中被引用
AddSourceDlg.obj : error LNK2019: 無法解析的外部符號 "protected: void __thiscall CResizableDialog::EnableSaveRestore(wchar_t const *,int)" (?EnableSaveRestore@CResizableDialog@@IAEXPB_WH@Z) ,該符號在函數 "protected: virtual int __thiscall CAddSourceDlg::OnInitDialog(void)" (?OnInitDialog@CAddSourceDlg@@MAEHXZ) 中被引用
CollectionCreateDialog.obj : error LNK2019: 無法解析的外部符號 "protected: void __thiscall CResizableDialog::EnableSaveRestore(wchar_t const *,int)" (?EnableSaveRestore@CResizableDialog@@IAEXPB_WH@Z) ,該符號在函數 "unsigned int __stdcall ATL::_AtlGetThreadACPThunk(void)" (?_AtlGetThreadACPThunk@ATL@@YGIXZ) 中被引用
CollectionViewDialog.obj : error LNK2001: 無法解析的外部符號 "protected: void __thiscall CResizableDialog::EnableSaveRestore(wchar_t const *,int)" (?EnableSaveRestore@CResizableDialog@@IAEXPB_WH@Z)
DirectDownloadDlg.obj : error LNK2001: 無法解析的外部符號 "protected: void __thiscall CResizableDialog::EnableSaveRestore(wchar_t const *,int)" (?EnableSaveRestore@CResizableDialog@@IAEXPB_WH@Z)
SharedFilesCtrl.obj : error LNK2001: 無法解析的外部符號 "protected: void __thiscall CResizableSheet::EnableSaveRestore(wchar_t const *,int,int)" (?EnableSaveRestore@CResizableSheet@@IAEXPB_WHH@Z)
ClientDetailDialog.obj : error LNK2019: 無法解析的外部符號 "protected: void __thiscall CResizableSheet::EnableSaveRestore(wchar_t const *,int,int)" (?EnableSaveRestore@CResizableSheet@@IAEXPB_WHH@Z) ,該符號在函數 "protected: virtual int __thiscall CClientDetailDialog::OnInitDialog(void)" (?OnInitDialog@CClientDetailDialog@@MAEHXZ) 中被引用
FileDetailDialog.obj : error LNK2001: 無法解析的外部符號 "protected: void __thiscall CResizableSheet::EnableSaveRestore(wchar_t const *,int,int)" (?EnableSaveRestore@CResizableSheet@@IAEXPB_WHH@Z)
CollectionListCtrl.obj : error LNK2001: 無法解析的外部符號 "protected: void __thiscall CResizableSheet::EnableSaveRestore(wchar_t const *,int,int)" (?EnableSaveRestore@CResizableSheet@@IAEXPB_WHH@Z)
SearchListCtrl.obj : error LNK2001: 無法解析的外部符號 "protected: void __thiscall CResizableSheet::EnableSaveRestore(wchar_t const *,int,int)" (?EnableSaveRestore@CResizableSheet@@IAEXPB_WHH@Z)
DialogMinTrayBtn.obj : error LNK2019: 無法解析的外部符號 "public: __thiscall CResizableDialog::CResizableDialog(wchar_t const *,class CWnd *)" (??0CResizableDialog@@QAE@PB_WPAVCWnd@@@Z) ,該符號在函數 "public: __thiscall CDialogMinTrayBtn<class CResizableDialog>::CDialogMinTrayBtn<class CResizableDialog>(wchar_t const *,class CWnd *)" (??0?$CDialogMinTrayBtn@VCResizableDialog@@@@QAE@PB_WPAVCWnd@@@Z) 中被引用
ListViewWalkerPropertySheet.obj : error LNK2019: 無法解析的外部符號 "public: __thiscall CResizableSheet::CResizableSheet(wchar_t const *,class CWnd *,unsigned int)" (??0CResizableSheet@@QAE@PB_WPAVCWnd@@I@Z) ,該符號在函數 "public: __thiscall CListViewWalkerPropertySheet::CListViewWalkerPropertySheet(wchar_t const *,class CWnd *,unsigned int)" (??0CListViewWalkerPropertySheet@@QAE@PB_WPAVCWnd@@I@Z) 中被引用
cryptlib.lib(integer.obj) : error LNK2019: 無法解析的外部符號 "public: unsigned int * __thiscall CryptoPP::AlignedAllocator<unsigned int>::allocate(unsigned int,void const *)" (?allocate@?$AlignedAllocator@I@CryptoPP@@QAEPAIIPBX@Z) ,該符號在函數 "public: __thiscall CryptoPP::SecBlock<unsigned int,class CryptoPP::AlignedAllocator<unsigned int> >::SecBlock<unsigned int,class CryptoPP::AlignedAllocator<unsigned int> >(unsigned int)" (??0?$SecBlock@IV?$AlignedAllocator@I@CryptoPP@@@CryptoPP@@QAE@I@Z) 中被引用
Debug/emule.exe : fatal error LNK1120: 5 個無法解析的外部命令
生成日志保存在“file://d:\soft\code\eMule0.48a-Sources\srchybrid\Debug\BuildLog.htm”中
emule - 15 錯誤,0 警告
2007-10-9
今天把這兩條解決了
cryptlib.lib(integer.obj) : error LNK2019: 無法解析的外部符號 "public: unsigned int * __thiscall CryptoPP::AlignedAllocator<unsigned int>::allocate(unsigned int,void const *)" (?allocate@?$AlignedAllocator@I@CryptoPP@@QAEPAIIPBX@Z) ,該符號在函數 "public: __thiscall CryptoPP::SecBlock<unsigned int,class CryptoPP::AlignedAllocator<unsigned int> >::SecBlock<unsigned int,class CryptoPP::AlignedAllocator<unsigned int> >(unsigned int)" (??0?$SecBlock@IV?$AlignedAllocator@I@CryptoPP@@@CryptoPP@@QAE@I@Z) 中被引用
2007-10-17
今天秒大刀把鏈接不過的問題解決了
解決方法:把ResizableLib的一個項目屬性改下
哈哈,爽了!
為表達感激之情,請秒大刀去吃飯,結果半路上被QA叫回公司了,暈!



