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

要在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路径里。

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

view plain copy to clipboard print ?
  1. microsoft visual studio 9.0/vc/atlmfc/include/atlcom.h(431) : error C2146: syntax error : missing ';' before identifier 'rgclsidAllowed'  

 

 

  这个问题还相当恶心,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)

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

 

view plain copy to clipboard print ?
  1. /microsoft sdks/windows/v6.0a/include/qedit.h(498) : fatal error C1083: Cannot open include file: 'dxtrans.h': No such file or directory  

 

 

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

 

view plain copy to clipboard print ?
  1. http://hi.baidu.com/qinpc/blog/item/b7a7b5b7991f30f131add18c.html  
  2. http://social.msdn.microsoft.com/Forums/en-US/windowssdk/thread/ed097d2c-3d68-4f48-8448-277eaaf68252  
  3. http://groups.google.gy/group/microsoft.public.win32.programmer.directx.video/msg/f12e18598b399ef9  

 

 

   我没有使用那个博客里的方案,我的方案是,安装好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那把编好的拷贝过去即可。

 

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

view plain copy to clipboard print ?
  1. cryptlib.lib(hmac.obj) : error LNK2001: unresolved external symbol  

 

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

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

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

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

你可能感兴趣的:(Windows 7+VisualStudio2008环境下编译eMule 0.49c)