在vs2008中编译(调试)eMule0.50a以及veryCD版的easyMule
--------------------------------------------------------
关键字:
- Vs2008
- eMule0.50a
- easyMule
- 调试
- atlrx.h
- windows SDK 7.0
- 增量链接
- ITaskbarList3
- LNK2005
- 无法解析的外部符号
- LIBCMT and LIBCMTD
- MTD
- /FORCE:MULTIPLE
- 直接编译(包含了lib解决方案)
1.将rcdll.dll复制到Visual Studio .NET 2008安装目录的Vc\bin目录中。(这是为了使用能在vista下显示的图标)
2.打开easyMule_vs2008_Libs.sln,执行“生成解决方案”。(easyMule_vs2008_Libs.sln里所包含的是easyMule所依赖的库文件。)
3.打开easyMule_vs2008.sln编译即可。
- Atlrx问题:
- 增量链接问题
- ITaskbarList3问题
- 直接把easyMule项目里面的生成lib的解决方案:crypto51,crypto55, resizableLib,zlib, CxImage等全部改拷到了eMule源代码下(按照结构,它们是和srchybrid并列的,当然CxImage是默认放在srchybrid下的。
- 根据这些项目的位置以及产生的lib位置,调整eMule项目文件属性中链接器->输入->附加依赖项中的具体内容(它默认是有内容的,你要根据当前情况来调整)[注意,两个点开头表示上两级目录,一个点表示上一级目录]
version.lib
winmm.lib
ws2_32.lib
gdiplus.lib
ADSIId.lib
crypt32.lib
wmvcore.lib
..\zlib\debug\zlib.lib
..\crypto51\crypto\debug\cryptlib.lib
..\id3lib\libprj\id3libD.lib
.\CxImage\debug\cximage.lib
..\libpng\projects\visualc71\Win32_LIB_Debug\libpngd.lib
..\ResizableLib\DebugUnicode\ResizableLib.lib
.\miniupnpc\debug_vc9\miniupnpc.lib - 然后仔细确认各个依赖库生成顺利,边编译eMule,毫无疑问,错误是一大堆的。主要有:
- 直接移过来的CxImage项目的输出函数MakeBitmap是单参数的,但在eMule0.50a中有一处是两个参数调用。这说明了eMule0.50a对应的那个CxImage版本的MakeBitmap函数(xImage.h定义,ximawnd.cpp中实现)是两个参数的。但这里为了简单,我就把eMule0.50a中的代码中两个参数的第二个给去掉了,这个参数是反应透明与否的,是关于界面,并不影响我对eMule网路的了解,所以果断cancel之。如果反之,即修改CxImage项目为两个参数,会出现【无法解析的外部符号】这样的错误,事实上,这个问题恼了我一个小时,我最终也没有解决之,所以我才不得已采用了上面的方法。
- error LNK2005: __initp_misc_invarg 已经在libcmtd.lib(invarg.obj) 中定义。这是因为项目链接了两个库LIBCMT and LIBCMTD,以至于出现already defined。解决办法是:
1.确保当前工程的Runtime Library和引用lib的Runtime Library相同便可以解决问题
比如:lib库的Runtime Library是MD,当前工程也得设置为MD。 (我这里全是MTD)
2.In Debug mode,在Debug命令行中加上/FORCE:MULTIPLE。(我在属性->配置->链接的命令行和调试的命令中都添加了,应该只需要一处吧,我懒得比较了).方法来自:http://weihe6666.iteye.com/blog/1405657 - 至此,基本上ok了。编译,成功1个,警告n个,哎,总算可以歇会了。
- 主要是这些库都很成熟,多数已经出现很久,切已很少更新,所有这里easyMule和eMule用到的可以一致。
- 还有就是easyMule和eMule这里我都用vs08编译,直接挪过来,不冲突。
- 需要注意的libpng在easyMule中不是这样的,它是pnglib,我也懒得转换,这个是从官网下的,解压后为lpng1513文件夹,从里面深入多层后,可以找到vs7项目,转换,生成即可。
- 另外easyMule用的是crypto55,但应该eMule还是用crypto51.
- 还有CxImage项目编译是需要png文件夹的,由于都是从easyMule项目中copy过来,所以不妨把png folder给copy过来到CxImage同级目录,方便编译。
- 安装windows SDK时,有点慢,不要急。还有只需要安装开发工具和头文件即可。
- 我的系统是windows7。
- 很多地方是debug_v9,在填写是注意,其实都无所谓,但是要一致。
http://www.cnblogs.com/jianu/archive/2010/12/25/how_to_compile_eMule_in_vs2008.html
http://blog.csdn.net/cecilulysess/article/details/4631458
http://jiangliwei.blogbus.com/logs/28509863.html
在vs2008中编译(调试)eMule0.50a以及veryCD版的easyMule相关推荐
- Visual Studio 2005中编译调试新功能
在日常的编程中,程序员经常离不开的工作之一,就是调试.当写好一段代码或程序后,在运行后总会出现这样那样的问题,比如各样的错误,程序员就必须进行调试,将这些错误排除.在最新出炉的Visual Studi ...
- 在vs2008中编译Secret Maryo Chronicles
Secret Maryo Chronicles是一款类似于马里奥的开源游戏.是优秀2D模版卷轴游戏的典范.是学习2D游戏设计的好材料 这是个由C++写的游戏.使用了openGL+SDL作为主框架.以及 ...
- VS2008中编译和使用OpenSSL
一.编译OpenSSL 在编译OpenSSL前,需要正确安装Perl,因为在编译OpenSSL时需要使用到该程序. 下载最新版本的Perl:http://downloads.activestate.c ...
- linux使用vscode运行c,Linux中使用VS Code编译调试C++项目详解
前言 关于VS Code在Linux下的安装这里就不提了,不管是CentOS还是Ubuntu,如果不懂且搜问题足够的情况下,你会解决的. 一.前置知识--gcc/g++的编译链接过程 在Windows ...
- libgc 加 .mak 在 vc6 vs2008 中的编译方法
libgc 加 .mak 在 vc6 vs2008 中的编译方法 libgc 加 .make 在 vc6 vs2008 中的编译方法 开源代码多数是用 .mak 编译 win 平台,网上的教程多是说明 ...
- Qt for ios 在 xcode 中编译(便于调试)
前言 用 Qt 开发 IOS 程序需要搭配最新版的 xcode 才能进行编译,这个毫无疑问吧.如果需要设置程序图标或启动页之类这种平台性的功能,直接在 xcode 中进行设置是最方便的,并且在 xco ...
- VS2008 在IE8中 调试 ActiveX控件 无法进入断点的解决方法 设置VS2008和IE8 调试ATL MFC ActiveX控件
VS2008 在IE8中 调试 ActiveX控件 无法进入断点的解决方法 设置VS2008和IE8 调试ATL MFC ActiveX控件 参考文章: (1)VS2008 在IE8中 调试 Acti ...
- VLD 在VS2019中编译通过,但调试时报 应用程序无法正常启动(0xc0150002)
@[TOC](VLD 在VS2019中编译通过,但调试时报 应用程序无法正常启动(0xc0150002)) 背景 Visual LeakDetector(VLD)是一款用于Visual C++的免费的 ...
- xcode7中,无需证书即可进行真机编译调试!
iOS开发总是面临一个问题,借不到机器进行测试,自己的机器又不能使用.每到这个时候我都在想,苹果什么时候给力一点? 现在,苹果终于给力了!Xcode7全新特性来袭,下面为大家介绍: 无需证书的真机编译 ...
- 程序编译中如何调试configure
通常,在软件包的 README 文件中只能找到非常简单的"编译说明:运行 configure,然后运行 make".但是,这样行不通时怎么办?在本文中,Peter Seebash ...
最新文章
- linux基础命令介绍十四:定时任务
- Android 动画小知识点
- [YTU]_2906( 多重继承 日期与时间)
- HDFS集中式的缓存管理原理与代码剖析--转载
- 叶明哲 | 数据中心空调文章集锦
- 自然语言处理顶会 ACL 2018 参会见闻
- 牛客 contest893 H-Chat (dp)
- postgresql update使用别名_PostgreSQL逻辑复制之pglogical
- Alt Gr or Shift
- 为什么单击用户账户没有反应_win10用户获取最高权限的方法
- HT for Web中3D流动效果的实现与应用
- R语言分布的卡方拟合优度检验
- #1829 : Tomb Raider(哈希)
- php doctrine,PHP-如何使用Doctrine DBAL?
- python获取pdf页数_Python分割指定页数的pdf文件方法
- bilibili视频流量数据潜望镜
- Fabric 1.0源代码分析(22)Ledger #blkstorage(block文件存储)
- GTD软件比较和选用
- 工厂仪表定时拍照智能AI算法识别内网部署方案
- 使用docker和jenkins简单部署springboot项目