我有这个非常短的节目。出于某种原因,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中的调试设置进行编译并链接到libmysqld.lib。我还在工作目录中复制libmysqld.dll。这导致我上面描述的效果。 我试图链接到libmysql.lib并将libmysql.dll复制到工作目录,这是有效的。 我不打算调试mysql代码,所以我可以忍受。虽然调试库不适用于相同的代码,但仍然很奇怪。
答案 0 :(得分:2)
如果你链接libmysqld.lib,mysql_init将返回NULL或崩溃。我测试了mysql5.6 5.7 win10 vs2017。
正确的是libmysql.lib。