1. 程式人生 > >編譯官方eMule v0.49攻略

編譯官方eMule v0.49攻略

備註:編譯環境Microsoft Visual C++ .NET 7.1,編譯版本為官方eMule v0.49版本,非國內VeryCD版本。

一:下載原始碼和支援庫
1.
下載eMule v0.49 原始碼


4.ResizableLib 1.3 -- A set of MFC classes to easily make resizable windows

5.libpng-1.2.40

二:編譯前整理工作

1.解壓eMule0.49c-Sources.zip到目錄:eMule0.49c-Sources

可以看到eMule主工程目錄在srchybrid資料夾, 另外該資料夾下已經攜帶了三個第三方庫:

EditBinX, id3lib, ReplaceVistaIcon和一個空殼庫:zlib(只有工程檔案,沒有原始檔)

使用VS.NET 2003直接開啟srchybrid目錄下的:emule_vc71-all.sln 會提示無法載入另外三個工程:

/crypto51/cryptlib_vc71.vcproj

/ResizableLib/ResizableLib_vc71.vcproj

/libpng/Projects/VisualC71/libpng.vcproj

因此需要把這些第三方工程匯入到整個solution中。

2.解壓crypto51.zip/eMule0.49c-Sources/crypto51

該工程預設為

VC6開啟,複製cryptlib.dspcryptlib_vc71.dsp。使用VS2003開啟,講提示是否升級,同意後點擊儲存工程會生成:cryptlib_vc71.vcproj

3.解壓ResizableLib_1_3.zip/eMule0.49c-Sources/ResizableLib

該工程預設為VC6開啟,使用上述方法生成:ResizableLib_vc71.vcproj

4.解壓libpng-1.2.40.tar.gz/eMule0.49c-Sources/libpng

預設即有:/libpng/projects/visualc71/libpng.vcproj

5.解壓zlib-1.2.3.tar.gz

中的檔案到已存在的目錄:/eMule0.49c-Sources/zlib

三:開始編譯工作

1.此時VS2003開啟emule_vc71-all.sln將看到比較完整的工程資料夾。根據依賴關係逐個編譯。先編譯依賴庫,再編譯eMule

2.編譯crypto

1.Crypto v5.1。對於VC .NET 2003編譯器,我們要對原始碼做以下修改: http://www.mscto.com

在檔案integer.cpp中把
AllocatorBase<T>::pointer AlignedAllocator<T>::allocate(size_type n, const void *)
改為
CPP_TYPENAME AllocatorBase<T>::pointer AlignedAllocator<T>::allocate(size_type n, const void *)

在檔案pubkey.h中把
template <class PK, class GP>
class DL_KeyImpl : public PK
{
public:
typedef GP GroupParameters;

OID GetAlgorithmID() const {return GetGroupParameters().GetAlgorithmID();}
改為
template <class PK, class GP, class O = OID>
class DL_KeyImpl : public PK
{
public:
typedef GP GroupParameters;

O GetAlgorithmID() const {return GetGroupParameters().GetAlgorithmID();}

3.編譯eMule提示無法找到sapi.h,解決線索如下

// NOTE: If you get a compile error due to missing 'sapi.h', look at "emule_site_config.h" for further information.

// 'sapi.h' is not shipped with VS2003.

// Uncomment the following line if you get compile errors due to missing 'sapi.h'

#undef HAVE_SAPI_H

4.編譯eMule提示無法找到wmsdk.h

// Uncomment the following line if you get compile errors due to missing 'wmsdk.h'

#undef HAVE_WMSDK_H

5.編譯eMule提示沒有找到wmvcore.lib

從網上下載一個,這個庫是標準DirectShow的元件

6.編譯eMule提示無法找到:../crypto51/release/cryptlib.lib

需要修改工程設定中的Linker->Input->Additional Dependencies

../crypto51/release/cryptlib.lib 修改為:

../crypto51/release/cryptlib_vc71.lib

../crypto51/debug/cryptlib.lib 修改為:

../crypto51/debug/cryptlib_vc71.lib

7.編譯eMule提示沒有找到ResizableLib.lib.

SolutionResizableLib Project比較奇怪,編譯環境需要選擇

Lib Release/Debug 而不是:

Unicode Release/Debug

C執行時庫選擇Multi-threaded(/MT)

../ResizableLib/ReleaseUnicode/ResizableLib.lib 修改為:

../ResizableLib/Release/ResizableLib_vc71.lib

../ResizableLib/DebugUnicode/ResizableLib.lib 修改為:

../ResizableLib/Debug/ResizableLib_vc71.lib

8.修改連結C的執行時庫

EditBinX: Single-threaded(/ML) à Multi-threaded(/MT)

Ligpng: Multi-threaded DLL(/MD) à Multi-threaded(/MT)

ReplaceVistaIcon: Single-threaded(/ML) à Multi-threaded(/MT)

如果編譯Release版,則所有eMule的支援庫都用/MT編譯。

如果編譯Debug版,則所有eMule的支援庫都用Multi-threaded debug(/MTd)編譯。

如此可以避免很多連結衝突問題。

相關推薦

編譯官方eMule v0.49

備註:編譯環境Microsoft Visual C++ .NET 7.1,編譯版本為官方eMule v0.49版本,非國內VeryCD版本。 一:下載原始碼和支援庫1.下載eMule v0.49 原始碼 4.ResizableLib 1.3 -- A set of MFC

【轉】VS2015編譯TensorFlow C++程式完全

VS2015編譯TensorFlow C++程式完全攻略 原文地址:https://blog.csdn.net/jacke121/article/details/80473648 本文參考和綜合了多篇網路部落格文章,加以自己的實踐,最終終於在windows環境下,編譯出可以用於C++程式呼叫

VS2015編譯TensorFlow C++程式完全

本文參考和綜合了多篇網路部落格文章,加以自己的實踐,最終終於在windows環境下,編譯出可以用於C++程式呼叫tensorflow API的程式,並執行成功考慮到網路上關於這方面的資料還較少,特總結全過程如下,希望能幫助到有需要的碼農朋友,文中有部分文字步驟是借鑑他人文章,引用路徑在最後列出。一、環境準備:

vs2008編譯nxogre全

NxOgre是一款優秀的物理引擎,因其小巧、程式設計簡單而深受大家的喜愛。Ogre是一款開源的圖形渲染引擎,可惜僅僅是渲染引擎,因此就得需要其他的物理引擎來實現。不知什麼原因,NxOgre的官網已經掛掉。因此,也只能通過github的教程來一窺。官網教程地址:https://github.com/b

Android螢幕適配全(最權威的官方適配指導)

Android的螢幕適配一直以來都在折磨著我們這些開發者,本篇文章以Google的官方文件為基礎,全面而深入的講解了Android螢幕適配的原因、重要概念、解決方案及最佳實踐,我相信如果你能認真的學習本文,對於Android的螢幕適配,你將有所收穫! Android螢幕適配出現的原因

NPM:nodejs官方包管理工具的簡介、安裝、使用方法之詳細

NPM之nodejs官方包管理工具的簡介 NPM的全稱是Node Package Manager,是隨同NodeJS一起安裝的包管理和分發工具,它很方便讓JavaScript開發者下載、安裝、上傳以及管理已經安裝的包。 npm是nodejs官方的一種包管理工具,簡單點來說,

Android權威官方螢幕適配全

Android的螢幕適配一直以來都在折磨著我們這些開發者,本篇文章以Google的官方文件為基礎,全面而深入的講解了Android螢幕適配的原因、重要概念、解決方案及最佳實踐,我相信如果你能認真的學習本文,對於Android的螢幕適配,你將有所收穫!

egg.js官方教程

一、文章前言 egg.js是node.js的一個web後臺框架,為我們進行web後臺開發帶來了太多的便利。諸如此類的框架還有很多,例如:express、koa。本文將著重討論egg.js,因為它是很嚴

IT職業發展(技術僅是工具而已)

困境 將不 一位 實用 做到 工作計劃 們的 人的 說明 時光飛逝,我事業中第一個十年就快結束了。在這十年裏,讓我收獲了很多,今天想與大家分享一下,我在 IT 職場方面的一些個人經驗,不一定對每個人都實用,請大家僅作參考吧。 大家既然都是做技術的,那我們不妨先從技術這

zabbix接入百度告警詳細

zabbix 百度告警 詳細 第一章:百度告警端配置首先需要申請百度告警賬號,使用以下鏈接註冊百度告警賬號:http://gaojing.baidu.com/#/register輸入郵箱後,點擊驗證註冊碼,所註冊的郵箱會收到一封來自百度告警平臺的驗證碼:賬號註冊完成後來到登錄界面,依次分別驗證手機

《Linux深度》一書,講述Linux日常系統管理和服務器配置內容

linuxLinux深度攻略 首先從介紹Linux系統的安裝入手,講述了Linux系統管理和服務器配置兩部分的知識。系統管理方面內容有Linux系統簡介和安裝,Linux字符界面,目錄和文件管理,Linux常用命令,Shell編程,用戶和組群賬戶管理,權限、所有者和ACL,歸檔、壓縮和備份,軟件包管理,磁盤和

【轉】簡明 Vim 練級

優秀 super 換行 下劃線 分屏 內容 改變 鼠標 cool 原文出處: yannesposito 譯文出處:陳晧 Vim的學習曲線相當的大,所以,如果你一開始看到的是一大堆VIM的命令分類,你一定會對這個編輯器失去興趣的。下面的文章翻譯自《Learn Vim

Windows勒索病毒防範、解決方法全

windowsxp 殺毒軟件 金山毒霸 下載地址 官方下載 【防禦措施建議】1、安裝殺毒軟件,保持安全防禦功能開啟,比如金山毒霸已可攔截(下載地址http://www.duba.net),微軟自帶的WindowsDefender也可以。2、打開Windows Update自動更新,及時升級

Linux一鍵安裝web環境全(阿裏雲ECS服務器)

傳輸 80端口 掛載 iyu 使用 ftp服務 老版本 雲服務 linux服務 摘自阿裏雲服務器官網,此處 一鍵安裝包下載: 點此下載 安裝須知 1、此安裝包可在阿裏雲所有linux系統上部署安裝,此安裝包包含的軟件及版本為: nginx:1.0.15、1.2.5、1.4.

小巧數據庫 Apache Derby 使用

數據庫1. Derby 介紹 將目光放在小 Derby 的原因是純綠色、輕巧、內存占用小,分分鐘在你機子跑起來,自己做點需要連接數據庫的代碼實踐非常方便。 雖然 Mysql 也可以,多一種選擇,不是也挺好麽? Apache Derby是一個完全用 java 編寫的數據庫,Derby是一個Open

android屏幕適配的全

屏幕分辨率 縮放 img 關系 我們 http 分辨 tro pix 一. 核心概念與單位詳解 1. 什麽是屏幕尺寸、屏幕分辨率、屏幕像素密度? 屏幕分辨率越大,手機越清晰 2. 什麽是dp、dip、dpi、sp、px?之間的關系是什麽? dip:Density

輕松學習之Linux教程四 神器vi程序編輯器

分享 內置 snippet 2014年 答案 程序 ice 界面 fff 本系列文章由@超人愛因斯坦出品,轉載請註明出處。 文章鏈接: http://hpw123.net/a/Linux/Linuxjichu/2014

性能調優

池化 cast real 設計 nosql iptraf chan rsync 什麽是 關於性能優化這是一個比較大的話題,在《由12306.cn談談網站性能技術》中我從業務和設計上說過一些可用的技術以及那些技術的優缺點,今天,想從一些技術細節上談談性能優化,主要是一些

【codecombat 中國】--邊遠地區的深林--森林劈裂者

codec script 代碼 sre else png 技術 普通 敵人 代碼語言:javascript 目標:抵禦食人魔;代碼沒有錯誤; 參考代碼: // 盡可能經常使用你的新技能“cleave” hero.moveXY(23, 23);while(true) {

CSS 初級

ctype val div 文字 rsquo 會有 ack -1 大小 內容來自html dog. css的格式為 ‘property: value’ 給html插入css樣式的方式有三種:內聯、內部css、外部css文件,如下所示: