成功编译eMule0.46c,生成可执行版本!

本文介绍eMule0.46c的编译,包括编译环境为windowsXP+sp2、vs.net(7.10)等。详细说明了release版本编译过程,如文件解压、复制、配置等。但debug模式编译存在问题,部分工程无法编译,还提及未找到程序入口函数,希望高手解答。

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

编译eMule 0.46c

介绍:

    本文介绍关于编译eMule 0.46c 的一些注意事项,和编译过程及环境

    编译环境:windowsXP+sp2,vs.net(7.10), ionix-libs-presetted-unieMule 0.46c sources

    注意:本人经过多次努力,不知何种原因,只能进行release版本额编译,却始终因为附属工程库的debug编译不成功使得的debug的编译始终不能成功。下面是release的结果页面:

 

 

 

 

输出窗口

 

 

 

正在链接...

正在生成代码

已完成代码的生成

LINK : warning LNK4089: /OPT:REF 已丢弃所有对“comdlg32.dll”的引用

 

结果

 

 

 

生成日志保存在“file://h:/Xb/c++/ionix-libs-presetted-uni/srchybrid/release/BuildLog.htm”

emule - 0 错误,1 警告

 

 

 

 

下面介绍编译的过程:

首先解压缩从http://ionix.airu.de/Downloads-index-req-viewdownload-cid-4.html下载的ionix-libs-presetted-uni解压缩到一个目录,然后将下载后的eMule 0.46c sources.zip解压,把emule 0.46解压出来的srchybrid文件夹拷贝到ionix-libs-presetted-uni目录中,然后打开ionix-libs-presetted-uni目录中的emule.sln,这个项目就完整了。注意,最好先不要急着去打开项目。由于不明原因ionix-libs-presetted-uni下的CxImage工程和srchybrid文件夹下的是不同的,而且此时srchybrid下的emule.sln还有问题:srchybrid下的配置使eMule只在自己的目录下找CxImage工程,而外部聚合工程emule.sln中配置的CxImagesrchybrid目录是同级的。而外部聚合工程的CxImage有问题,不能和eMule很好的工作,但是自身是可以编译通过的。所以

1、       我们将srchybrid目录下的CxImage文件夹剪切出来,ionix-libs-presetted-uni目录下的CxImage文件夹删掉,然后复制刚才剪切的CxImage

2、       打开ionix-libs-presetted-uni目录下的emule.sln,点击生成->配置->emule选为release,其它各项也都设置为相应的release(如果是debug的),然后在工程资源文件夹,选中emule

3、       点击生成解决方案。

4、       这次可能会出现提示CxImage的库文件找不到。那是因为emule的工程配置文件中对它的设置不对。

5、       我们去emule.vcproj,用记事本打开,然后找到有“./CxImage/debug/cximage.lib”这个字段的所有地方,将其改成“../CxImage/debug/cximage.lib”,就是着一个点的问题,造成了找不到路径的显像。

6、       然后我们再编译,就可以顺利生成了。

 

可是,当我将全部的工程设置为Debug模式,进行生成debugexe时,部分苦无法进行debug模式的编译,不知道是为什么,如果有高手看见此文,自己尝试成功了debug模式的编译,请劳驾告诉小弟,不胜感激。谢谢!

这是我再debug模式下调试时出的问题,其中pnglibdebug编译,不论我怎么用debug模式编译他都顺利通过,可就是不产生debug的编译结果目录在/png目录下。然后我自己建立了目录,复制了编译好的lib在里面。可其它工程又出了问题。

输出窗口

 

 

 

正在链接...

LINK : fatal error LNK1104: 无法打开文件“/Xb/c++/ionix-libs-presetted-uni/libGeoIP/Debug/libGeoIP.lib”

 

结果

 

 

 

生成日志保存在“file://h:/Xb/c++/ionix-libs-presetted-uni/srchybrid/debug/BuildLog.htm”

emule - 1 错误,0 警告

 

这个libGeoIP工程也是的,release可以无错编译,但是debug就不行。还请高手赐教。

另外一点,我看了eMule 0.46c 的源代码,竟然没有找到程序的入口,也就是类似main或者winmain之类的函数,很奇怪,有所不解,难道win32程序没有winmain可以让编译器找到入口?那是怎么做到的呢?请高手指点,如果使用钩子编程,也应该总应有个“起点”函数吧!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值