emule源代码研究,第一步,DEBUG模式编译!

  
经过多次努力编译 0.47a 成功,写下心得,主要注意的是由于依赖了四个开源的库,所以在配置工程连接输入路径时一定要正确配置,还有就是所有工程全部用/MTD方式编译,都要用相应的DEBUG模式,因为是为了学习和研究,所以不提供relase的配置了,需要的话可以参考上一次的编译。原来那次Relase模式的编译没有办法调试,给研究和学习带来不便。 正确的编译方法如下:

1.eMule0.47a-Sources.zip
解压到 eMule0.46b-Sources -> 把下载的东东都放进去 -> 打开 eMule0.46b-Sources 文件夹,所有的附加包都按照下述命名要求放入sources文件夹中,和srchybrid同级。
所有的工程都用 Multi-threaded(/MT)               编译模式
2.cryptopp521.zip 解压到 cryptopp521 -> 重命名为 crypto51
打开 crypto51/cryptest.dsw                   
生成 -> 生成解决方案
编译模式: Debug 模式
3.zlib123.zip 解压到 zlib123 -> 重命名为 zlib
打开 zlib/projects/visualc6/zlib.dsw
生成 -> 配置管理器 -> 活动的解决方案配置 ->LIB Debug
解决方案资源管理器 -> 右击 "zlib" -> 属性 -> 配置属性 ->C/C++-> 代码生成 -> 运行时库 -> 多线程调试 (/MTd)
生成 -> 生成解决方案                   
编译模式: LIB_DEBUG 模式
4.ResizableLib_1_3.zip 解压到当前文件夹
打开 ResizableLib/ResizableLib.dsw
项目 -> 属性 -> 配置属性 -> 常规 ->MFC 的使用 -> 在静态库中使用 MFC
项目 -> 属性 -> 配置属性 -> 常规 -> 字符集 -> 使用 Unicode 字符集
项目 -> 属性 -> 配置属性 ->C/C++-> 代码生成 -> 运行时库 -> 多线程调试 (/MTd)
项目 -> 属性 -> 配置属性 ->C/C++-> 语言 -> wchar_t 视为内置类型 -> (/Zc:wchar_t)
生成 -> 生成解决方案
编译模式: DEBUG Static 模式
5.lpng128.zip 解压到当前文件夹 -> 重命名为 png
打开 png/projects/visualc6/libpng.sln
生成 -> 配置管理器 -> 活动的解决方案配置 ->LIB Debug
解决方案资源管理器 -> 右击 "libpng" -> 属性 -> 配置属性 ->C/C++-> 代码生成 -> 运行时库 -> 多线程调试 (/MTd)
生成 -> 生成解决方案
编译模式: LIB_DEBUG 模式
6. 打开 id3lib/libprj/id3lib.sln
生成 -> 生成解决方案
编译模式: Debug 模式
7. 打开 srchybrid/lang/lang.sln
生成 -> 生成解决方案 /* 可能会出现 非法操作 不管它 */
8. 打开 srchybrid/CxImage/cximage.sln
生成 -> 生成解决方案
编译模式: Debug 模式
9.
打开 srchybrid/emule_vc71.sln
项目 -> 属性 -> 配置属性 -> 链接器 -> 输入 -> 附加依赖项 ->
version.lib winmm.lib ws2_32.lib gdiplus.lib ADSIId.lib crypt32.lib ../zlib/projects/visualc6/Win32_LIB_Debug/zlibd.lib ../crypto51/debug/cryptlib.lib ../id3lib/libprj/id3libD.lib ./CxImage/debug/cximage.lib ../png/projects/visualc71/Win32_LIB_Debug/pngd.lib ../ResizableLib/Debug_Static/ResizableLib.lib
(注意上面的路径和自己编译出来的库名可能会有一部分不相符,要注意哦!自己好好核对,把附加库的路径和名字都写对了!)
编译模式: Debug 模式
 
编译环境 :XP pro SP2, VS.net 2003
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
网上下载了emule0.50a-Xtreme8.1-sources源码,声称可以在VS2008下直接编译成功,经我实际测试,系统会报错,其中第一类错误,由于系统中为了兼容VISTA/WIN7,增加了相关定义,而这些定义在XP/WIN2003环境下会报错,共771个错误,如: 错误 2 error C2065: “ITaskbarList3”: 未声明的标识符 d:\emule相关资料\emule0.50a-xtreme\emule0.50a-xtreme8.1-sources\srchybrid\emuleDlg.h 195 emule 错误 3 error C2146: 语法错误 : 缺少“;”(在标识符“m_thbButtons”的前面) d:\emule相关资料\emule0.50a-xtreme\emule0.50a-xtreme8.1-sources\srchybrid\emuleDlg.h 196 emule 错误 4 error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int d:\emule相关资料\emule0.50a-xtreme\emule0.50a-xtreme8.1-sources\srchybrid\emuleDlg.h 196 emule 错误 5 error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int d:\emule相关资料\emule0.50a-xtreme\emule0.50a-xtreme8.1-sources\srchybrid\emuleDlg.h 196 emule 错误 6 error C2146: 语法错误 : 缺少“;”(在标识符“m_currentTBP_state”的前面) d:\emule相关资料\emule0.50a-xtreme\emule0.50a-xtreme8.1-sources\srchybrid\emuleDlg.h 198 emule 错误 7 error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int d:\emule相关资料\emule0.50a-xtreme\emule0.50a-xtreme8.1-sources\srchybrid\emuleDlg.h 198 emule 错误 8 error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int d:\emule相关资料\emule0.50a-xtreme\emule0.50a-xtreme8.1-sources\srchybrid\emuleDlg.h 198 emule 错误 10 error C2065: “ITaskbarList3”: 未声明的标识符 d:\emule相关资料\emule0.50a-xtreme\emule0.50a-xtreme8.1-sources\srchybrid\emuleDlg.h 195 emule ...... 此类错误中,ITaskbarList3是VISTA/WIN7环境下与任务栏相关的变量,只要屏闭掉相关定义就能正常。 除此之外还报有下面 5 个错误(实际引起错误的位置只有两个): 错误 135 error C2059: 语法错误 : “:” d:\eMule\srchybrid\BaseClient.cpp 1603 emule 错误 136 error C2065: “tagName”: 未声明的标识符 d:\eMule\srchybrid\BaseClient.cpp 1604 emule 错误 137 error C2228: “.WriteTagToFile”的左边必须有类/结构/联合 d:\eMule\srchybrid\BaseClient.cpp 1604 emule 错误 139 error C2001: 常量中有换行符 d:\eMule\srchybrid\BaseClient.cpp 4832 emule 错误 140 fatal error C1057: 宏展开中遇到意外的文件结束 d:\eMule\srchybrid\BaseClient.cpp 4832 emule 此类错误中,实际上是是两个语法错误,由于太过简单,我与网友都怀疑是作者故意制造的错误,若是完全不懂C++的人,即使拿到源码,编也会报错,从而止步于此。而稍懂C++的人(本人即是此类菜鸟),则可以找出错误之处。 为方便诸多象我一样的初学者,我把修正之后,可以在 XP/WIN2003 +VS2003SP1 环境下直接编译成功的emule0.50a-Xtreme8.1-sources源码发布上来,以便互相学习交流。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值