用p2p优化网络游戏客户端自动更新工具

用p2p优化网络游戏客户端自动更新工具

先研究下这个,吼吼。够研究一段时间的了。

电驴: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  警告

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的一个项目属性改下
用p2p优化网络游戏客户端自动更新工具_第1张图片

哈哈,爽了!
用p2p优化网络游戏客户端自动更新工具_第2张图片

为表达感激之情,请秒大刀去吃饭,结果半路上被QA叫回公司了,晕!

你可能感兴趣的:(用p2p优化网络游戏客户端自动更新工具)