C语言 使用Visual Studio 2015 Win64编译MySQL连接器

nlejzf6q  于 2022-12-03  发布在  Mysql
关注(0)|答案(3)|浏览(134)

在用cmake创建了一个解决方案后,我在Visual Studio中遇到了1400个错误。主要的问题是,似乎没有人编译连接器,只是为他们的项目使用预编译库,在Windows上更是如此。下面是一些错误,似乎timespec被重新定义了一次,首先是在中,然后是在my_global.h中。错误和定义。
所以问题是,我怎么修复1400个错误?
或者至少,一些如何摆脱重新定义的建议会很棒!
如果您有任何问题,请在下面的代码中输入您的问题。//秒-〉= 0长电视_纳秒;//纳秒- [0,999999999] };#endif我的全局. h

struct timespec {
    union ft64 tv;
    /* The max timeout value in millisecond for native_cond_timedwait */
    long max_timeout_msec;
 };

错误C2011 '时间规格':“结构”类型重定义(编译源文件)
错误C2039 'tv':不是“timespec”的成员(正在编译源文件)
错误C2227 "-〉tv“的左边必须指向类/结构/联合/泛型类型(正在编译源文件C:\Users\DDubinin\Downloads\mysql-connector-c-6. 1. 6-src\libmysql\authentication_win\handshake. cc)
错误C2227 "-〉max_timeout_msec“的左边必须指向类/结构/联合/泛型类型(正在编译源文件C:\Users\DDubinin\Downloads\mysql-connector-c-6.1.6-src\libmysql\authentication_win\plugin_client.cc)验证_win_client c:\用户\DDubinin\下载\mysql-connector-c-6.1.6-src\包含\my_global.h 682

xdnvmnnf

xdnvmnnf1#

我将关闭这个问题,设法编译源代码与较旧的,VS2013 x64,版本的Visual Studio,和CMake 4.3.1...
看来,Visual Studio 2015中的新变化正在破坏C连接器源代码,我希望MySQL团队将在未来的版本中修复此问题。

xmakbtuz

xmakbtuz2#

我使用了MySQL服务器代码(即mysql-5.7.13.zip)并从中编译了MySQL连接器/C。

1qczuiv0

1qczuiv03#

我在VS 2015中编译这段代码的动机是,当我编译mysqlcppconn 1.1.8时,我得到了错误:

error LNK2038:mismatch detected for `_MSC_VER`:value '1800' does not match value '1900'

18001900表示使用的vs版本。

MSVC++14.0 _MSC_VER == 1900 (Visual Studio 2015)
MSVC++12.0 _MSC_VER == 1800 (Visual Studio 2013)
MSVC++11.0 _MSC_VER == 1700 (Visual Studio 2012)
MSVC++10.0 _MSC_VER == 1600 (Visual Studio 2010)
MSVC++9.0 _MSC_VER == 1500 (Visual Studio 2008)
MSVC++8.0 _MSC_VER == 1400 (Visual Studio 2005)
MSVC++7.1 _MSC_VER == 1310 (Visual Studio 2003)
MSVC++7.0 _MSC_VER == 1300
MSVC++6.0 _MSC_VER == 1200
MSVC++5.0 _MSC_VER == 1100

我搜索了一下,发现它表明我从mysql下载的mysqlcppconn-static.lib是使用VS 2013编译的,它在VS 2015中导致错误。
我实际上遵循了这本指南,它对我很有效。
http://nov11.github.io/jekyll/update/2017/04/24/compilemysqlcppconnector1.1.8.html
我的操作系统是windows 10 x86
总结如下:

  • git克隆mysqlcppconn源代码并 checkout 所需的版本
git clone https://github.com/mysql/mysql-connector-cpp.git
git checkout 1.1.8
  • 在本地下载boost和mysql-server-code,并修改CMakeLists.txt,以便编译器可以找到该库

在这种情况下,我的boost版本是boost_1_64_0,mysql是mysql-5.6.26-win32https://cdn.mysql.com/archives/mysql-5.6/mysql-5.6.26-win32.zip
修改CMakeLists.txt,添加行:

SET(BOOST_ROOT "C:\\boost_1_64_0")
SET(MYSQL_DIR "C:\\mysql-5.6.26-win32")
SET(MYSQL_VERSION "5.6.26")
  • 可制造:
mkdir build && cd build
cmake -G "Visual Studio 14 2015" -A win32 -DMYSQLCLIENT_STATIC_LINKING=yes ..
  • 求解snprintf link error

注解掉mysql-server-include代码中my_config.h中的define snprintf _snprintf

  • 生成lib文件:
cmake --build <your-build-folder-path> --config Release --target mysqlcppconn -j 4 --
cmake --build <your-build-folder-path> --config Release --target mysqlcppconn-static -j 4 --

相关问题