發生在一周前的事情了,當時想感受下 MySQL C API ,就寫了幾個小例子。雖然是在 Windows(我的工作電腦是 64位 Windows) 上面,但是不想用 VS ,只想用文本軟件寫好代碼後用 cl 編譯,然後用 link 鏈接。就在我寫完最簡單的一個例子後,死活都編譯不過去。代碼如下:
#include <my_global.h> #include <mysql.h> int main(int argc, char **argv) { printf("MySQL client version: %s\n", mysql_get_client_info()); return 0; }
我以為是我的 cl 命令寫的不正確,雖然檢查了 N 遍並沒有發現錯誤。然後我就用 VS 新建一個工程,這樣編譯命令就不會錯了,我去,還真的編譯不過去,說是無法找到 mysql_get_client_info 的定義。因為我一直都沒有感覺到 Win32 和 Win64 編程的差別,所以也沒有往這方面想。N 遍過後還是查找不出來原因,就只有各種搜索,終於搜索到了原來有人和我碰見同樣的問題。我就是沒有那位童鞋聰明,可以冷靜下來思考分析,找到問題的所在。因為我一開始覺得 Win32 和 Win64 沒有什麼區別,所以一直都在編譯命令上找原因。
正如那位童鞋所指,在64位系統用32位的編譯環境確實出現了問題。那位童鞋由於用的是 VS ,所以 TA 是 右擊選中項目->屬性->配置管理器->新建一個 64位 平台,用這個平台去編譯解決的。我不想用 VS 所以用的是 VS 自帶的環境,如下圖。
選擇帶有 x64 的即可。
最後:碰見了因 Win32 和 Win64 的不同之處帶來的問題後,印象加深了不少。