gpt4 book ai didi

mysql - 如何让 mysql C api 在 WINDOWS 上工作?

转载 作者:太空宇宙 更新时间:2023-11-03 23:46:46 25 4
gpt4 key购买 nike

下面是我的一小段代码:

#include <my_global.h>
#include <mysql.h>
int main(int argc, char **argv)
{
printf("MySQL client version: %s\n", mysql_get_client_info());
exit(0);
}

很明显,唯一的目标是让这个小程序运行起来,所以没有什么可夸耀的。但令我沮丧的是,这让我很头疼。首先我收到一个错误,我将其发布为 SO question我幸运地解决了。现在我收到了一系列错误如下所述:

-------------- Build: Debug in mysqlconntest (compiler: GNU GCC Compiler)---------------

gcc.exe -Wall -fexceptions -g -I"C:\Program Files (x86)\MySQL\MySQL Server 5.7\include" -I"C:\Program Files (x86)\MySQL\MySQL Server 5.7\include" -c C:\Users\Sajith\Documents\CodeBlocks\mysqlconntest\main.cpp -o obj\Debug\main.o
In file included from C:\Users\Sajith\Documents\CodeBlocks\mysqlconntest\main.cpp:2:0:
C:\Program Files (x86)\MySQL\MySQL Server 5.7\include/my_global.h:211:19: error: conflicting declaration 'typedef int mode_t'
In file included from c:\program files (x86)\codeblocks\mingw\bin\../lib/gcc/mingw32/4.7.1/../../../../include/io.h:20:0,
from C:\Program Files (x86)\MySQL\MySQL Server 5.7\include/my_global.h:32,
from C:\Users\Sajith\Documents\CodeBlocks\mysqlconntest\main.cpp:2:
c:\program files (x86)\codeblocks\mingw\bin\../lib/gcc/mingw32/4.7.1/../../../../include/sys/types.h:99:17: error: 'mode_t' has a previous declaration as 'typedef _mode_t mode_t'
In file included from C:\Users\Sajith\Documents\CodeBlocks\mysqlconntest\main.cpp:2:0:
C:\Program Files (x86)\MySQL\MySQL Server 5.7\include/my_global.h:212:19: error: conflicting declaration 'typedef SSIZE_T ssize_t'
In file included from c:\program files (x86)\codeblocks\mingw\bin\../lib/gcc/mingw32/4.7.1/../../../../include/io.h:20:0,
from C:\Program Files (x86)\MySQL\MySQL Server 5.7\include/my_global.h:32,
from C:\Users\Sajith\Documents\CodeBlocks\mysqlconntest\main.cpp:2:
c:\program files (x86)\codeblocks\mingw\bin\../lib/gcc/mingw32/4.7.1/../../../../include/sys/types.h:118:18: error: 'ssize_t' has a previous declaration as 'typedef _ssize_t ssize_t'
In file included from C:\Users\Sajith\Documents\CodeBlocks\mysqlconntest\main.cpp:2:0:
C:\Program Files (x86)\MySQL\MySQL Server 5.7\include/my_global.h: In function 'tm* localtime_r(const time_t*, tm*)':
C:\Program Files (x86)\MySQL\MySQL Server 5.7\include/my_global.h:644:25: error: 'localtime_s' was not declared in this scope
C:\Program Files (x86)\MySQL\MySQL Server 5.7\include/my_global.h: In function 'tm* gmtime_r(const time_t*, tm*)':
C:\Program Files (x86)\MySQL\MySQL Server 5.7\include/my_global.h:650:22: error: 'gmtime_s' was not declared in this scope
In file included from C:\Users\Sajith\Documents\CodeBlocks\mysqlconntest\main.cpp:3:0:
C:\Program Files (x86)\MySQL\MySQL Server 5.7\include/mysql.h: At global scope:
C:\Program Files (x86)\MySQL\MySQL Server 5.7\include/mysql.h:252:3: error: 'NET' does not name a type
C:\Program Files (x86)\MySQL\MySQL Server 5.7\include/mysql.h:277:25: error: 'SCRAMBLE_LENGTH' was not declared in this scope
C:\Program Files (x86)\MySQL\MySQL Server 5.7\include/mysql.h:415:48: error: use of enum 'enum_session_state_type' without previous declaration
C:\Program Files (x86)\MySQL\MySQL Server 5.7\include/mysql.h:419:47: error: use of enum 'enum_session_state_type' without previous declaration
C:\Program Files (x86)\MySQL\MySQL Server 5.7\include/mysql.h:441:45: error: use of enum 'mysql_enum_shutdown_level' without previous declaration
C:\Program Files (x86)\MySQL\MySQL Server 5.7\include/mysql.h:448:12: error: use of enum 'enum_mysql_set_option' without previous declaration
C:\Program Files (x86)\MySQL\MySQL Server 5.7\include/mysql.h:580:28: error: 'NET' has not been declared
C:\Program Files (x86)\MySQL\MySQL Server 5.7\include/mysql.h:634:21: error: 'MYSQL_ERRMSG_SIZE' was not declared in this scope
C:\Program Files (x86)\MySQL\MySQL Server 5.7\include/mysql.h:635:19: error: 'SQLSTATE_LENGTH' was not declared in this scope
Process terminated with status 1 (0 minute(s), 0 second(s))
15 error(s), 0 warning(s) (0 minute(s), 0 second(s))

下面是我做过的事情。

  1. 通过了 this创建 libmysql.a 文件的教程。
  2. 验证了我的包含目录和链接器库。

    链接器

    Linker1

    Linker2

    包含目录

    Include Directories

这让我觉得我在进入MySQL API编程之前没有做好功课。我在这里错过了什么?在编译 MYSQL 应用程序之前,我应该确保哪些非常基本的事情。我能够在我的 Linux 机器上成功编译这个程序。所以我猜这是 Windows 特有的问题。任何帮助表示赞赏。

注意:我在 IDE 中使用 Code::Blocks(使用 MingGW 工具链),在操作系统中使用 Windows 8.1 64 位。 MySQL 是 32 位的,我的应用程序也是 32 位的。

最佳答案

使用 MinGW,您无需创建胶水。您可以将 lib 和 dll 文件从 MySQL 链接到您的 C 文件。您可以通过在编译中添加库文件的目录和 MySQL 头文件的目录来实现。你可以通过 gcc 'name.c' -o 'output.exe' -L "*Lib Directory*"-I "*Header Files Directory*"

关于mysql - 如何让 mysql C api 在 WINDOWS 上工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30711777/

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