用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 警告
正在链接
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叫回公司了,晕!