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

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

運行結果是

可以看出,X64 PreBuildEvent執行時的當前目錄是"D:\Projects\zlib-1.2.7\contrib\vstudio\vc10",檢查一下zlib的目錄結構,所以將"cd ..\..\contrib\masmx64"這一行修改為"cd ..\..\masmx64"就ok了。