由于对C比较熟悉,最近要处理一个数据文件,所以想用C语言控制台程序处理并存入MySQL数据库。
环境:
在64bit的win 10上安装64bit的MySQL (full 模式完全安装),再用64bit的codeblock+GNU GCC编译, 或者用64bit VS2013 + cl编译器编译。(最后发现这两种方式都可以,并不是说Mysql默认的windows的库只适用于cl编译器。)
出现的问题 - 1:
设置对mysql库文件的搜索路径后,程序中添加对mysql.h 的include后现找不到两个头文件:
形如 “unresolved external symbol _mysql_query@8 referenced in function” 链接问题。
问题原因:
主要是因为使用的库(64 bit)和软件(64 bit)所要编译的软件Win32控制台程序(32 bit)不兼容的问题导致。所以与编译器无关,要编译的32bit程序要配合32bit的库文件。
解决方法:
在这个地址: http://dev.mysql.com/downloads/connector/c/ 下载32bit的Connector,也就是编译时所要用到的库和头文件。可以用zip版本,解压缩直接添加路径的依赖到解压对应文件夹并在Link libraries中添加lib文件就可以。这样编译和链接都可以通过。
形如:
头件在 C:\Program Files (x86)\MySQL\MySQL Connector C 6.1\include
库文件位置:C:\Program Files (x86)\MySQL\MySQL Connector C 6.1\lib\libmysql.lib
出现的问题 - 3:
codeblock在运行时提示计算机中丢失libmysql.lib文件而不能运行。
解决方法:
需要将dll文件拷贝到Debug或者Release的exe所在文件夹下才可以。应该还有更好的办法将库文件打包进去或者操作一下。大家有好的办法可以留言。回头就改。
VS的问题原因和codeblock是一样的。处理方法相似,过程中觉得C#开发这个东西比用C快多了。做这样的小应用还是面向对象来的快。C#中添加依赖就很方便。