emule的编译与运行

来源:互联网 发布:网络推广部岗位职责 编辑:程序博客网 时间:2024/05/17 04:37

最近想起了以前emule在vs2008没有编完,所以今天又接着编了一些,出了一下问题。参考了

1.在vs2008下编译eMule-VeryCD工程 http://longquanwjx.blog.163.com/blog/static/15153819201002534926266/

2.[解决方案]最新版eMule源代码编译不过的看这里http://www.verycd.com/groups/eMuleDev/209863.topic/page1

后总算编译过去了。特别要注意的是emule里面的3个库crypto51,id3lib,ResizableLib对vs2008有点旧,我是从网上下最新的,然后在vs2008里面编译通过的。

编译完之后就运行,没想到中了assert,assert的语句为ASSERT_KINDOF(CWnd, pView);。中这个assert是因为SearchResultsWnd的声明有问题,ASSERT_KINDOF的解释如下:

ASSERT_KINDOF
This function works only for classes declared with the DECLARE_DYNAMIC or DECLARE_SERIAL macro.

修改很简单:

1.d:/project/emule/src/SearchResultsWnd.h的86行从DECLARE_DYNCREATE(CSearchResultsWnd)改为DECLARE_DYNAMIC(CSearchResultsWnd)

2.d:/project/emule/src/SearchResultsWnd.cpp的86行从IMPLEMENT_DYNCREATE(CSearchResultsWnd, CResizableFormView)改为IMPLEMENT_DYNAMIC(CSearchResultsWnd, CResizableFormView)

至于这种改法更加详细的原因请参考:

1.为什么创建视图会失败 http://group.gimoo.net/review/110315

 

最终emule的运行结果如下图:

image

 

emule分析的一些资料:

 eMule源码主要调用流程分析 http://blog.csdn.net/babyfacer/archive/2009/05/19/4202572.aspx

http://ganghust.download.csdn.net/

eMule 0.27c Class Diagram.pdf

eMule源码分析【体系结构和各个类得详细说明】

eMule协议规范【中文版本】