一、了解64位系統(tǒng)
關(guān)于64位系統(tǒng)有很多術(shù)語,包括x64,IA-64,Intel 64,
AMD64等等。花時間了解了一點其中的差異。根據(jù)兼容性大致可以分為兩類IA-64和Intel 64。
IA-64:或者說叫
Itanium(安騰)系列,是Intel和HP公司開發(fā)的一個64位體系架構(gòu),主要用于服務(wù)器市場,與x86體系不兼容。
Intel 64:包括EM64T / AMD64 / x86-64 / x64等,它是對x86體系架構(gòu)的擴展,并向后兼容。由于名稱很多,所以很容易混淆。具體了解可參見
WIKI。
要想了解64位C++編程,請看
這里。
二、編譯第一個64位程序
近期將個人電腦升級到Win7系統(tǒng),編譯器也換成了Visual Studio 2010。有一個Project需要用到zlib庫。于是從
http://www.zlib.net/下載了一份最新的zlib1.2.7
但是在編譯64位動態(tài)庫時卻出錯了。

根據(jù)我的分析,應(yīng)該與
PreBuildEvent預(yù)處理環(huán)境有關(guān)。因為我在win32環(huán)境下編譯就沒有問題。為啥在x64環(huán)境下PreBuildEvent找不到"..\..\contrib\masmx64"路徑呢?那么到底在執(zhí)行PreBuildEvent操作時,當(dāng)前的目錄是哪里了?查了半天資料沒找到,在郁悶的時候我想到了一個辦法。嘿嘿,關(guān)鍵時候還得靠自己啊。PreBuildEvent操作時執(zhí)行的其實是一個多行的批處理命令(當(dāng)然是支持宏替換的)。我直接在PreBuildEvent批命令中加入了一行

運行結(jié)果是

可以看出,X64 PreBuildEvent執(zhí)行時的當(dāng)前目錄是"D:\Projects\zlib-1.2.7\contrib\vstudio\vc10",檢查一下zlib的目錄結(jié)構(gòu),所以將"cd ..\..\contrib\masmx64"這一行修改為"cd ..\..\masmx64"就ok了。