vs2008编译emule0.9b

  1. VS2008需要打SP1补丁。
  2. 遇到#include <../src/mfc/afximpl.h>  编译不过去时,经检查是VS的包含路径中,win2003 Sdk R2 的包含路径在前,把$(VCInstallDir)atlmfc/include改到它前面即可。
  3. 对错误 标识符 __RPC__deref_in_opt
  4. $(WindowsSdkDir)/include放到win2003 Sdk R2前面

    其它方法一、在emule_site_config.h中

    #include <rpcsal.h>

    方法二、 修改emule_site_config.h  98行为

    //#ifndef HAVE_VISTA_SDK

    #undef HAVE_SAPI_H

    //#endif//HAVE_VISTA_SDK

  5. MfcStaticBinaryCompatible.cpp文件编译错误,在文件#include…….前加入
  6. #ifndef WINVER

    #define WINVER 0x0502                        // 0x0502 == Windows Server 2003, Windows XP (same as VS2005-MFC)

    #endif

     

    #ifndef _WIN32_WINNT

    #define _WIN32_WINNT WINVER                // same as VS2005-MFC

    #endif

  7. PeerCacheFinder.cpp文件错误
  8. 打开srchybrid目录下的PeerCacheFinder.cpp文件找到672行,修改如下:

    // if(result.Encode(aucResult, SIGNATURELENGTH)){

    result.Encode(aucResult, SIGNATURELENGTH);

    uchar aucHash1[16];

    for (int i = 0; i != 16; i++)

    aucHash1 = aucResult[(SIGNATURELENGTH-1)-i];

    bSignatureCheckResult = md4cmp(MD5Sum(pachCompleteFile, nIFileSize-SIGNATURELENGTH).GetRawHash(), aucHash1) == 0;

    // }

    主要是由于在cryptopp530中result.Encode()返回的是void,跟以前的crypto51已经不一样了

     

    源文档 <http://ideasinlife.net/?viewthread-1>

  9. time.inl错误  const time_t*   不能转为 const __time32_t*
  10. 定义是在vc/include/crtdefs.h  548

    在scanner.cpp 增加一行 出现#include 前加入

    #ifndef _USE_32BIT_TIME_T

    #define _USE_32BIT_TIME_T

    #endif

  11.            CVTRES : fatal error CVT1100: 重复的资源。type:MANIFEST, name:1, language:0×0409
  12. LINK : fatal error LNK1123: 转换到COFF 期间失败: 文件无效或损坏

    解决方案:

    我的编译环境是Microsoft Visual Studio 2005

    将所有工程的属性(工程全选->右击->属性)->配置属性->清单工具->输入输出->嵌入清单,选择“否”,然后编译,就OK了。

    你可以参照微软的官方说明:http://support.microsoft.com/kb/320216/zh-cn

     

    源文档 <http://blog.csdn.net/xuxc/archive/2008/08/24/2822223.aspx>

     

  13. 无法打开包括文件:“atlrx.h”: No such file or directory
  14. VS 2008中由于将ALT项目的部分代码剥离出去成为了独立的开源项目,需要用到ALT中正则表达式等功能就需要手动下载。

    参考:http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=306398

    下载地址:http://www.codeplex.com/AtlServer (http://www.codeplex.com/AtlServer)

    把下载的东西解压缩到一个目录,比如c:/alt/

    在VS里面[工具]--[选项]--[项目和解决方案]--[VC++目录],在右上角选择[包含引用的文件]中加入c:/alt/include就OK了!

    源文档 <http://blog.csdn.net/everettjf/archive/2009/01/03/3696668.aspx>

     

  15. 链接错误,函数已定义
  16. 所有项目的代码生成运行库是否一致,release版本为MT

     

     

网上下载了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源码发布上来,以便互相学习交流。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值