Win7 VS2015 编译 LinkCreator0.7_Src 笔记

1.介绍

eMule常用链接形如 “ed2k://|file|filename.iso|filesize|filehash|”,是一种比较常用的下载协议。Download Link Creator可以对下载下来的文件进行校验或生成相应的链接。

2.修改项目生成可执行程序

2.1.下载源代码

2.1.1.打开 eMule-Project.net 页面。
2.1.2.找到 Download Link Creator Sources 下载到本地并解压出来。
2.1.3.打开 “LinkCreator0.7_Src\src\LinkCreator.sln” 文件,会提示升级解决方案,等待解决方案升级完成。

2.2.修改项目配置

在 ”项目属性“ --> ”链接器“ --> ”命令行" --> “附件选项” 中粘贴 “/SAFESEH:NO” 并保存,以解决提示 “error LNK2026: 模块对于 SAFESEH 映像是不安全的” 的问题。

2.3.修改代码,解决编译时提示版本错误的问题

在项目中搜索 “WINVER” 将下面几处的 “0x0400” 全部更改为 “0x0501”,以解决提示 “C1189 #error: MFC does not support WINVER less than 0x0501” 的问题。
最后一个 “** _WIN32_IE**” 也要修改,不然会提示 “error C2065: “CCM_SETWINDOWTHEME”: 未声明的标识符”。

#ifndef WINVER
#define WINVER 0x0501

#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0501
#endif						

#ifndef _WIN32_WINDOWS
#define _WIN32_WINDOWS 0x0501
#endif

#ifndef _WIN32_IE
#define _WIN32_IE 0x0501
#endif

2.4.修改代码,解决运行时错误的问题

找到 “bool CKnownFile::CreateFromFile(…)” 函数,替换获取文件大小的函数即可编译通过,正常运行。

	if (!file){
    
    
		AfxMessageBox(GetResString(IDS_CANTOPENFILE) + strFilePath, MB_ICONSTOP, MB_OK);
		return false;
	}

	// 修改后的代码
	CFile cfile;
	CFileStatus rStatus;
	CFile::GetStatus(strFilePath, rStatus);
	ULONGLONG fileSize = rStatus.m_size;
	// set filesize
	if (fileSize > MAX_EMULE_FILE_SIZE){
    
    
		fclose(file);
		return false; // not supported by network
	}
	SetFileSize((uint64)fileSize);

	// 原代码
// 	// set filesize
// 	if (_filelengthi64(*(int*)file/*->_file*/) > MAX_EMULE_FILE_SIZE){
    
    
// 		fclose(file);
// 		return false; // not supported by network
// 	}
// 	SetFileSize((uint64)_filelengthi64(*(int*)file/*->_file*/));

	setvbuf(file, NULL, _IOFBF, 1024*8*2);

3.附一个校验结果

ed2k://|file|zh-hans_windows_xp_professional_with_service_pack_3_x86_cd_vl_x14-74070.iso|630237184|EC51916C9D9B8B931195EE0D6EE9B40E|p=0324339B668EB5107D69F262822F41A8:B33098259D4CA324A47F57D029C9E769:CEF9073D25E17ED434444530471648CE:7386CDF6C72612CD564C8898AD2956A8:5029B4E6DB955DB01D9A2D326568A8FB:E1275B9819A670CE8A705D312913A947:44D34E76957B30BD8F4C4E4D8DC541FE:3CB1EF41389DF85F7246E97AE9DA450C:3D37D9433005FE09D895D44053727009:ACE743780A31CF1C9BC829AFD7D842E3:4891796D884E7DDC9E381F2FEAB62A3D:8AE706C7C3006989EC1C97016C0EA586:D269EB7E9328E9409E4485CA8DD43F06:23BB4331F1465AEC514F9991BC975CF5:03D8E2F0BA74F5C59D16E2B1A0A9B7F1:1A750E06370B59209338F84173EED6F5:F23CB91F6AD3BCC00BBC8E8E912A9C7B:2889BB0D4F3B1698DB031834C8E3B30C:621497BF4B176E06C5AA33CE27F3CF9B:8BA77124B0CF17AC009AEA11232C1F5B:E370B9A038318A5B7D1FDE6233590952:36D661CF77E14C71ACA0380C0DF01B8E:9B96585DA4E6AB7C43B3114963D9A827:C8941389CECFFFE977578FA37C7F2E71:05FCECBD173E2702F9ED8B121B35540D:D788D61F35A038E58F048C8B8E3BC2A5:4D05DADCB95D23E8B806D9561DB24746:7C24339D1001E9BD794EFC869CAA5516:9C5704D92020C35198A5948401317650:6110ED6319433317AE3B56656F962416:6DD53744859E9B9BDE01208108B75137:C6255ECC4AC3E6647DC6838B2A597540:844EF71A37444A602126E90E88C7CB54:88552B25786D214DA6ADCD8253263059:D8AB5FE526E4A78B8D4FF95C10F29D26:72A9D92E5042B36E6EA31E6F54611D83:197B46AC2759127869FA9F795DB66284:CA47B0803388ADBDF9E83E79AE065E27:43B7DA97047423EA8D502CA095C942A3:FE4C3D52441DF64C6D3A80B8F7EBAC11:175261DF7B199FB15A8EC69E756833DE:7A5FBE6D8547AE44BDA2EDBF6703BADA:08E2981342D9C4C8FE1AA473F6C47A3E:D38061BA40A3E0F6DC32669130F7ACB0:3C9BE4AFC2012631E9705475517C5619:EE79CAA7316EBCD28ECC64E4655FE683:60D56E003E622DDB5416B25A653BFB57:67B9F556B0154107292CC8CC0FD3EA33:01C2A2F274CBB8DEED5B30D6E9E6F09B:335FE914B0192BF1AEE61F5FC9E2E166:7BB3A4B66509E411A065B574DF71D6F3:0A218D15930759E391DD7382D62E392C:0ADF43D94D10F1967573A862AAEF623C:5253681BFD6235698242B112102BF4E2:B86C721F417215BFA84E2A799A14DD3B:22244C89B35B946575E26D3835F7D53A:4E5529A4961EDA0C59742528A37B23C6:758BBBB2583F3295F469FE8C574AA794:EC597A03AA0184FCCFB8613DE5A15F75:B4DFC4A0BD31FBCAA4A2648FCB457D60:F882ACFD5949068015F1CC64CBC23991:AA3D88CDE116339DAC45CB0BE5537779:5B2027C125C5A37E240833D8AB7EA1C6:27604D132B931F228495AA6D55857C5A:C7F93D6756C44449F3CA6F8E238F5C85|h=LRBTLEWQ4SJVGBUFC5YR2OYIBCS44MBK|/

参考链接:
1.error LNK2026: 模块对于 SAFESEH 映像是不安全的_孤独的糖三角-CSDN博客
2.关于错误: error C2065: “CCM_SETWINDOWTHEME”: 未声明的标识符 解决方法_flydream3618的专栏-CSDN博客
3.获取文件大小的六种方法大全,打开文件和不打开文件都有,C方法获取,C++方法获取,MFC方法获取。_ec06cumt的专栏-CSDN博客 注释掉的第6种方法

猜你喜欢

转载自blog.csdn.net/u012101384/article/details/103735001