Windows 7+VisualStudio2008环境下编译eMule 0.49c

本文详细记录了在Windows Server 2008 R2和Visual Studio 2008环境下编译eMule 0.49c的过程,包括解决缺少依赖、编译错误和链接问题的步骤。通过安装SP1、ATL Server、安全更新和DirectX SDK,最终成功完成编译。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  要在Windows7+VS2008的环境下,要编译安装eMule还是一件相当麻烦的事情,本文正好就是一片在此环境下编译成功的记录。
编译环境:

  • Windows Server 2008 R2
  • Visual Studio 2008 + SP1
  • Windows SDK 6.0a
  • ATL Server

  那么,首先一定要干的事情是把编译环境给整理好,所以你必须为VS2008打上SP1包,这样才能解决出现的大量cannot update program database 'e:/codestudy/emule-VeryCD-src/src/beta/vc90.pdb'错误。此外还必须安装好ATL Server库,并将其加入到VS2008中的VC++的include路径里。

  开始编译,结果立刻出了毛病:

  这个问题还相当恶心,Google还搜不到几个结果。在参考了这个帖子后解决了,解决方法是安装下面两个安全更新:

  • Security Update for Microsoft Visual Studio 2008 Service Pack 1 ATL for Smart Devices (KB973675)
  • Security Update for Microsoft Visual Studio 2008 Service Pack 1 (KB971092)

    好以后继续编译,过了这个,不过这次继续出错:

  晕倒了,这次居然牵扯出DirectX,这个问题有两部分,首先似乎需要先解决没有dxtrans.h的问题(不一定要,我是这样做的),下载个DX SDK Aug2007版本,注意必须是2007 aug,然后只把head和lib装上,这样就有了这个文件。但是还是会错误,主要是qedit.h的问题,需要进行一定的修改。可以参考如下几个帖子:

   我没有使用那个博客里的方案,我的方案是,安装好DXSDK aug2008和DirectX 9.0 SDK Update (February 2005) Extras这两个包后,把上述两者的include和lib目录都添加到VS2008的VC++include和lib目录下即可。

  这样既解决了Cannot open include file: 'dxtrans.h': No such file or directory问题,又解决了改完之后会产生的To compile qedit.h you must install the DirectX 9 SDK, to obtain the dxtrans.h header问题。

 

  这样,eMule主程序的编译问题都解决了,不过还会报其他调用的lib找不到的问题,这个问题比较简单,如果这个东西目录下有类似于cximage_vc9.vcproj的文件,只需要把它打开编译一下即可,没有的话就按照报错的路径从verycd那把编好的拷贝过去即可。

 

  继续编译,在链接的时候出现问题:

  这个问题网上的说法是只需要重新编译对于的库,在编译的过程中把它的character set设置成使用unicode即可,不过似乎crypto5.1按

照它官方网站的说明是无法在vs2008下编译的,而crypto5.6编译好了又无法链接,所以这里只能使用之前有朋友编译好的这些库了。

  各位可以从这里下载:http://download.VeryCD.com/emule071112_libsForVS2005.rar

  上面这些步骤过后,我的eMule总算是可以在我的环境下正常编译通过了。。。那么,后续还要对eMule进行MOD,之后的事情就交给之后的文章来说明了吧。

网上下载了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、付费专栏及课程。

余额充值