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

Compiling MySQL Connector with Visual Studio 2015 Win64

使用 cmake 创建解决方案后,我在构建过程中遇到 Visual Studio 中的 1400 错误。 主要问题是,似乎没有人编译连接器,只是在他们的项目中使用预编译库,Windows 更是如此。 这里有一些错误,似乎 timespec 被重新定义了一次,首先是在 ,然后是 my_global.h 中的第二次,下面是错误和定义。

所以问题是,我到底该如何修复 1400 错误?

或者至少,一些关于如何摆脱重定义的建议会很棒!

time.h #ifndef _CRT_NO_TIME_T 结构时间规范 { time_t tv_sec; // 秒 - >= 0 长tv_nsec; // 纳秒 - [0, 999999999] }; #万一 my_global.h

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

Error C2011 'timespec': 'struct' type redefinition (编译源文件C:\Users\DDubinin\Downloads\mysql-connector-c-6.1.6-src\mysys\my_mess.c) mysys c:\users\ddubinin\downloads\mysql-connector-c-6 .1.6-src\include\my_global.h 660

Error C2039 'tv': is not a member of 'timespec' (编译源文件C:\Users\DDubinin\Downloads\mysql-connector-c-6.1.6-src\mysys\my_malloc.c) mysys c:\users\ddubinin\downloads\mysql-connector-c-6.1.6-src\include\my_global.h 681

'->tv' 左侧的错误 C2227 必须指向 class/struct/union/generic 类型(编译源文件 C:\Users\DDubinin\Downloads\mysql-connector-c-6.1.6-src\libmysql\authentication_win\handshake.cc)auth_win_client c:\users\ddubinin\downloads\mysql-connector-c-6.1.6-src\include\my_global.h 681

'->max_timeout_msec'左边的错误C2227必须指向class/struct/union/generic类型(编译源文件C:\Users\DDubinin\Downloads\mysql-connector-c-6.1.6-src\libmysql\authentication_win\plugin_client.cc)auth_win_client c:\users\ddubinin\downloads\mysql-connector-c-6.1.6-src\include\my_global.h 682

我将关闭此问题,设法使用较旧的 VS2013 x64、Visual Studio 和 CMake 4.3.1 版本编译源代码...

看来,Visual Studio 2015 的新变化正在破坏 C 连接器源代码,我希望 MySQL 团队在未来的版本中解决这个问题。

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