我有一个很短的程序。由于某些原因,mysql_init总是为我返回null。根据文档,如果没有足够的内存,就会发生这种情况。这怎么可能呢?就是这几行代码。
#include "mysql.h"
int main()
{
MYSQL * mysql;
mysql = mysql_init(0);
// here mysql is 0
return 0;
}
我使用Visual Studio 2015和mariadb-10.1.8-win32.zip中的lib。
编辑:我让它工作了一点。我在visual Studio中使用debug Settings进行编译,并链接到libmysqld.lib。我还复制了工作目录中的libmysqld.dll。这导致了我上面描述的效果。我尝试链接到libmysql.lib并将libmysql.dll复制到工作目录中,并且成功了。我不打算调试mysql代码,所以我可以接受。但是仍然很奇怪,为什么调试库不适用于相同的代码。
发布于 2017-08-08 00:19:38
如果链接到libmysqld.lib,mysql_init将返回NULL或crash。我在mysql5.65.7 win10 vs2017上进行了测试。
正确的选择是libmysql.lib。
https://stackoverflow.com/questions/33258840
复制相似问题