gpt4 book ai didi

c++ - 链接 MySQL C 连接器?

转载 作者:行者123 更新时间:2023-11-30 00:41:20 27 4
gpt4 key购买 nike

我正在使用 Visual Studio 2012x64 Release模式多线程运行时库编写C++程序>。我的项目还包含链接的 boost 1.55.0 库。

我正在尝试以某种方式让MySQL C 连接器(C++ 连接器写得不好,所以我决定使用C)工作。它可以工作,但我遇到了随机崩溃,经过搜索后我相信 MySQL C 连接器未正确链接。

我尝试过的:

a) 我下载了适用于 Windows 的二进制 x64,并将其包含在库目录中:mysql-connector-c-6.1.3-winx64\lib\vs11。我还添加了额外的依赖项 mysqlclient.lib

b)我下载了源代码,我使用以下方式编译它:

cd C:\Users\Luka\Documents\mysql-connector-c-6.1.3-src
set MYSQL_DIR=C:\Users\Luka\Documents\mysql-connector-c-6.1.3-src
"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -G "Visual Studio 11 Win64" ^
-DBOOST_ROOT:STRING=C:\Users\Luka\Documents\boost_1_55_0\boost ^
-DMYSQL_LIB_DIR:STRING=C:\Users\Luka\Documents\mysql-connector-c-6.1.3-src\lib
devenv.com MySQLCPPCONN.sln /build Release

我真的很绝望,以上都没有解决随机崩溃问题,但是如果我从项目中删除 C 连接器,崩溃就不会发生!

最佳答案

随机崩溃很可能与 MySQL 客户端库的多线程使用有关。试试这个

mysql_library_init(0, nullptr, nullptr);

在产生任何线程之前。

此处,来自 MySQL 文档的更多具体信息:

In a nonmulti-threaded environment, the call to mysql_library_init() may be omitted, because mysql_init() will invoke it automatically as necessary. However, mysql_library_init() is not thread-safe in a multi-threaded environment, and thus neither is mysql_init(), which calls mysql_library_init(). You must either call mysql_library_init() prior to spawning any threads, or else use a mutex to protect the call, whether you invoke mysql_library_init() or indirectly through mysql_init(). Do this prior to any other client library call.

关于c++ - 链接 MySQL C 连接器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21750242/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com