要在Windows7+VS2008的环境下,要编译安装eMule还是一件相当麻烦的事情,本文正好就是一片在此环境下编译成功的记录。
编译环境:
那么,首先一定要干的事情是把编译环境给整理好,所以你必须为VS2008打上SP1包,这样才能解决出现的大量cannot update program database 'e:/codestudy/emule-VeryCD-src/src/beta/vc90.pdb'错误。此外还必须安装好ATL Server库,并将其加入到VS2008中的VC++的include路径里。
开始编译,结果立刻出了毛病:
这个问题还相当恶心,Google还搜不到几个结果。在参考了这个帖子后解决了,解决方法是安装下面两个安全更新:
好以后继续编译,过了这个,不过这次继续出错:
晕倒了,这次居然牵扯出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,之后的事情就交给之后的文章来说明了吧。