【问题标题】:can't connect to mariadb properly无法正确连接到 mariadb
【发布时间】:2016-08-07 00:23:48
【问题描述】:

我现在正在尝试使用 c++ 实现服务器,我尝试将用户的信息保存到数据库中,但是在连接到数据库时遇到了一些问题。由于代码块生成以下错误,我无法构建我的程序

-------------- Build: Debug in server (compiler: GNU GCC Compiler)--------------- mingw32-g++.exe -Wall -fexceptions -g -lpthread -lmysql -I"D:\Program Files\MariaDB 10.1\include\mysql" -c D:\Projects\server\main.cpp -o obj\Debug\main .o mingw32-g++.exe -L"D:\Program Files\MariaDB 10.1\lib" -o bin\Debug\server.exe obj\Debug\main.o "D:\Program Files (x86)\CodeBlocks\MinGW\lib \libwinpthread.a" "D:\Program Files (x86)\CodeBlocks\MinGW\lib\libws2_32.a" obj\Debug\main.o:在函数“main”中: D:/Projects/server/main.cpp:13: 未定义对 `mysql_init@4' 的引用 D:/Projects/server/main.cpp:14: 未定义对 `mysql_real_connect@32' 的引用 collect2.exe:错误:ld 返回 1 退出状态 进程以状态 1 终止(0 分钟,2 秒) 3 个错误,3 个警告(0 分钟,2 秒)

我从它的官方网站下载了 MariaDB Connector/ODBC 2.0.10 Stable,我尝试了很多不同的解决方案,我在 Internet 上找到了它,但它仍然不起作用。有人可以帮我解决这个问题吗?任何回复将不胜感激。

【问题讨论】:

  • 您的问题是第 13 行和第 14 行,错误是“未定义的引用”。搜索那个错误,你会发现很多信息。显然你的程序想要使用一个它找不到的函数。
  • 感谢回复,mysql_init应该在mysql.h中定义并在libmysql.lib中实现,我确实将包含mysql.h和libmysql.lib的路径添加到代码块中的搜索目录中' 设置。
  • 你也链接了图书馆吗? “包含”只允许编译它,但你需要告诉链接器将你的程序与已安装在你机器上某处的 libmysql 链接。
  • 是的,我在编译程序的时候添加了选项-lmysql
  • 您应该为链接程序添加它,而不是编译它的各个模块。

标签: c++ gcc mariadb


【解决方案1】:

GNU 链接器对选项顺序很敏感。如果您在 main 中使用 libmysql,则选项 -lmysql 应该在 after main.o

UPD:我注意到您甚至在第二个链接字符串中都没有库。在第一个字符串中它是无用的,添加到实际链接发生的第二个字符串。

【讨论】:

    猜你喜欢
    • 2020-04-21
    • 2015-10-13
    • 1970-01-01
    • 2020-10-18
    • 1970-01-01
    • 2019-08-02
    • 2019-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多