链接 MySQL C 连接器
Linking MySQL C connector?
我正在使用Visual Studio 2012,x64发布模式,多线程运行时库编写C++程序。我的项目还包含链接的 boost 1.55.0 库。
我正在尝试以某种方式获得MySQL C连接器(C++连接器写得不好,所以我决定使用C)工作。它可以工作,但我遇到了随机崩溃,搜索后,我相信MySQL C连接器未正确链接。
我尝试过:
a) 我为 Windows 重新加载了二进制 x64,并包含在库目录中:mysql-connector-c-6.1.3-winx64libvs11
.我还添加了其他依赖项mysqlclient.lib
b) 我下载了源代码,我使用以下方法编译它:
cd C:UsersLukaDocumentsmysql-connector-c-6.1.3-src
set MYSQL_DIR=C:UsersLukaDocumentsmysql-connector-c-6.1.3-src
"C:Program Files (x86)CMake 2.8bincmake.exe" -G "Visual Studio 11 Win64" ^
-DBOOST_ROOT:STRING=C:UsersLukaDocumentsboost_1_55_0boost ^
-DMYSQL_LIB_DIR:STRING=C:UsersLukaDocumentsmysql-connector-c-6.1.3-srclib
devenv.com MySQLCPPCONN.sln /build Release
我真的很绝望,以上都没有修复随机崩溃,但是如果我从项目中删除 C 连接器,崩溃就不会发生!
随机崩溃很可能与MySQL客户端库的多线程使用有关。试试这个
mysql_library_init(0, nullptr, nullptr);
在生成任何线程之前。
在这里,来自 MySQL 文档的更具体信息:
在非多线程环境中,对 mysql_library_init() 的调用 可以省略,因为 mysql_init() 会自动调用它作为 必要。但是,mysql_library_init() 在 多线程环境,因此 mysql_init() 都不是 调用 mysql_library_init()。必须调用 mysql_library_init() 在生成任何线程之前,或者使用互斥锁来保护 调用,无论您是调用 mysql_library_init() 还是间接通过 mysql_init()。在调用任何其他客户端库之前执行此操作。
相关文章:
- 使用cmake从源代码构建MySQL连接器/C++失败(与以前的声明冲突)
- 使用mysql c++连接器的未定义引用
- MySQL C++连接器链接错误
- C++MySQL连接器没有utf8
- MySQL 连接器/C++.尝试在此过程中停止连接到数据库
- 如何使用连接器 c++ 在 mySQL 表二进制(16) 字段中存储 c++ 字节数组?
- MySQL C++连接器循环
- MySQL c++ 连接器:使用 SetBlob() 在查询中设置多个 blob 数据的正确方法是什么?
- 在 C/C++ 中使用 MySQL 连接器执行插入到表时出错
- 无法在我的ubuntu中正确安装MySQL连接器/c++
- 在 MySQL 连接器C++ API 中使用一个函数调用执行多个查询的正确方法是什么?
- mysql c ++连接器异常:用户"root"@'localhost'的访问被拒绝(使用密码:NO)&&MySQL服务器已消失
- MySQL 连接器 CPP 在 CentOS 6 中未定义的引用
- MySQL C++连接器:添加符号时出错:文件格式无法识别
- MySQL连接器C 结果集被缓冲
- 在 mysql 连接器中对 mysqlx 函数的未定义引用
- 我可以在不知道SQL的情况下使用SQLite或MySQL的C++连接器吗?
- 更新MySQL连接器后,隐式转换停止工作
- 批量插入 Mysql C++连接器
- 使用MySQL C 连接器从C 代码访问MEMSQL