MinGW环境下配置mysql

为什么要使用MinGW(Minimalist GNUfor Windows)?最初只是在VS里面写个ios::sync_with_stdio(false);想要禁用cin,cout的同步来提高一下输入输出的速度,结果发现加上该语句后速度竟然几乎不受影响。遍翻博客,都是人云亦云的说加上禁用同步的语句后cin的速度可以接近scanf,直到读到一篇博客说在Linux环境下禁用同步的确可以提高速度,但是windows下很多编译器对这个并不敏感。

遂考虑下载mingw,以便在windows下测试一下禁用同步的效果。在官网随便下了个mingx后,测试禁用同步后cin的效果还是很不错的。之后意外的发现,mingw在编译多线程程序时会找不到thread,查阅资料断定应该是版本原因。遂决定删了重新下载MinGW-W64,点击下载出现了cannot download repository.txt,再次查阅资料发现可能是国内不方便在线下载,遂下载离线版本。

下载完mingw64离线版解压后,设置环境变量,将bin目录的路径添加到path里,发现并没有设置成功,遂将mingw的文件夹重命名,去掉了64,再次设置环境变量,竟然就好了。

简单说下mingw相对于VS的优势,同一份代码,在VS下执行完需要36min,而在mingw环境下用g++编译链接再执行仅需要6min,速度竟然快了六倍。接下来考虑测试更复杂的程序,结果编译就出现了找不到mysql.h的错误。

花了很长时间翻阅网上资料,发现关于MINGW环境下配置mysql并没有很详细可用的教程,很经典的教程就是下图的这个。

MinGW环境下配置mysql_第1张图片

PS:include文件夹指的是哪个目录下的include?而且mysql文件夹下的include里面根本没有libmysql.def文件。尽管上面的教程并不详细,但是给我们提供了思路,需要找到def文件,再转化为.a文件以此实现mysql的配置。

继续搜索发现libmysql.def文件根本不会是现成的,而是需要我们下载pexports工具去转化的,考虑到这个工具并没有这么容易下载,附上找到的下载网址:https://vdisk.weibo.com/s/unhDlwQMVR3t1 。下载这个工具解压缩后,将libmysql.dll文件拷贝到该工具所在文件夹下,cmd进入dos窗口进入该文件夹,然后执行pexports.exe -v libmysql.dll > libmysql.def (exe文件可能要加上版本号,视文件名而定)语句就可以得到libmysql.def文件。之后将def文件拷贝到mingw的lib文件夹下,dos窗口进入该文件夹执行dlltool --input-def libmySQL.def --dllname libmySQL.dll --output-lib libmysql.a -k语句就会得到我们需要的libmysql.a文件了。

之后执行g++ main.exe语句发现报错。

MinGW环境下配置mysql_第2张图片

与之前图片上预测可能出现的错误不同,这里编译报错后面并没有编号。又花了很久取解决这个问题,最后误打误撞在编译时加上-lmysql编译便不再报错了,但是运行函数提示找不到libmysql.dll文件,遂将该文件拷贝到程序文件夹下,问题得到解决,程序正常运行。

总结:输入不清楚个中原理,但是的确在mingw的lib文件夹下添加libmysql.a文件,在编译时加上-lmysql,并且在程序文件中加上libmysql.dll会是一种在mingw下成功配置mysql的方法。 

你可能感兴趣的:(其它,MinGW)