发生在一周前的事情了,当时想感受下 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 ;
}
我以为是我的 cl 命令写的不正确,虽然检查了 N 遍并没有发现错误。然后我就用 VS 新建一个工程,这样编译命令就不会错了,我去,还真的编译不过去,说是无法找到 mysql_get_client_info 的定义。因为我一直都没有感觉到 Win32 和 Win64 编程的差别,所以也没有往这方面想。N 遍过后还是查找不出来原因,就只有各种搜索,终于搜索到了原来有人和我碰见同样的问题。我就是没有那位童鞋聪明,可以冷静下来思考分析,找到问题的所在。因为我一开始觉得 Win32 和 Win64 没有什么区别,所以一直都在编译命令上找原因。
正如那位童鞋所指,在64位系统用32位的编译环境确实出现了问题。那位童鞋由于用的是 VS ,所以 TA 是 右击选中项目->属性->配置管理器->新建一个 64位 平台,用这个平台去编译解决的。我不想用 VS 所以用的是 VS 自带的环境,如下图。
选择带有 x64 的即可。
最后:碰见了因 Win32 和 Win64 的不同之处带来的问题后,印象加深了不少。