在 VIsual Studio C++ 中构建 MySQL 代码时出现 LNK2019 错误

问题描述 投票:0回答:1

我花了大约两天的时间试图让它发挥作用,但我所做的每种方法仍然不断遇到相同的错误。我对将 MySQL 连接到 C++ 很陌生,所以我有点迷失,每次我尝试编译它时,都会抛出 LNK2019 错误。我正在使用 Visual Studio 2022。

#include <iostream>
#include <mysql.h>
using namespace std;

// DATABASE STUFF
struct connection_details {
    const char* server, * user, * password, * database;
};

MYSQL* mysql_connection_setup(struct connection_details mysql_details) {
    MYSQL* connection = mysql_init(NULL);

    if (!(mysql_real_connect(connection, mysql_details.server, mysql_details.user, mysql_details.password, mysql_details.database, 0, NULL, 0))) {
        cout << "Connection Error: " << mysql_error(connection) << endl;
        exit(1);
    }

    return connection;
}

MYSQL_RES* mysql_execute_query(MYSQL* connection, const char* sql_query) {
    if (mysql_query(connection, sql_query)) {
        cout << "MYSQL Query Error: " << mysql_error(connection) << endl;
        exit(1);
    }

    return mysql_use_result(connection);
}

// MAIN FUNCTION
int main(int argc, char const* argv[]) {
    MYSQL* con;
    MYSQL_RES* res;
    MYSQL_ROW row;

    struct connection_details mysql_db;
    mysql_db.server = "localhost";
    mysql_db.user = "root";
    mysql_db.password = "tAblE4wTe3";
    mysql_db.database = "test";

    con = mysql_connection_setup(mysql_db);
    res = mysql_execute_query(con, "select * from table1");

    cout << "Displaying Database:\n" << endl;

    while ((row = mysql_fetch_row(res)) != NULL) {
        cout << row[0] << " | " << row[1] << " | " << row[2] << endl;
    }

    mysql_free_result(res);
    mysql_close(con);

    return 0;
}

它显示的错误:

1>------ Build started: Project: Test, Configuration: Debug x64 ------
1>main.obj : error LNK2019: unresolved external symbol mysql_error referenced in function "struct MYSQL * __cdecl mysql_connection_setup(struct connection_details)" (?mysql_connection_setup@@YAPEAUMYSQL@@Uconnection_details@@@Z)
1>main.obj : error LNK2019: unresolved external symbol mysql_init referenced in function "struct MYSQL * __cdecl mysql_connection_setup(struct connection_details)" (?mysql_connection_setup@@YAPEAUMYSQL@@Uconnection_details@@@Z)
1>main.obj : error LNK2019: unresolved external symbol mysql_real_connect referenced in function "struct MYSQL * __cdecl mysql_connection_setup(struct connection_details)" (?mysql_connection_setup@@YAPEAUMYSQL@@Uconnection_details@@@Z)
1>main.obj : error LNK2019: unresolved external symbol mysql_query referenced in function "struct MYSQL_RES * __cdecl mysql_execute_query(struct MYSQL *,char const *)" (?mysql_execute_query@@YAPEAUMYSQL_RES@@PEAUMYSQL@@PEBD@Z)
1>main.obj : error LNK2019: unresolved external symbol mysql_use_result referenced in function "struct MYSQL_RES * __cdecl mysql_execute_query(struct MYSQL *,char const *)" (?mysql_execute_query@@YAPEAUMYSQL_RES@@PEAUMYSQL@@PEBD@Z)
1>main.obj : error LNK2019: unresolved external symbol mysql_free_result referenced in function main
1>main.obj : error LNK2019: unresolved external symbol mysql_fetch_row referenced in function main
1>main.obj : error LNK2019: unresolved external symbol mysql_close referenced in function main
1>C:\Users\Administrator\Documents\Visual Studio 2022\C++ Projects\Test\x64\Debug\Test.exe : fatal error LNK1120: 8 unresolved externals
1>Done building project "Test.vcxproj" -- FAILED.

这些是包含/库文件夹位置:

C:\Users\Administrator\Documents\Visual Studio 2022\mysql stuff\libbinlogevents
C:\Users\Administrator\Documents\Visual Studio 2022\mysql stuff\libbinlogstandalone
C:\Users\Administrator\Documents\Visual Studio 2022\mysql stuff\libchangestreams
C:\Users\Administrator\Documents\Visual Studio 2022\mysql stuff\libmysql
C:\Users\Administrator\Documents\Visual Studio 2022\mysql stuff\libservices
C:\Program Files\MySQL\Connector C++ 8.0\lib64\vs14

C:\Users\Administrator\Documents\Visual Studio 2022\mysql stuff\include
C:\Program Files\MySQL\Connector C++ 8.0\include

我尝试过查找,但我尝试用来解决的每个论坛、视频等都不起作用。我不确定这是 32 位还是 64 位问题,但我认为不是,因为所有文件都指向 64 位文件夹。我认为这是我的代码中的某些内容,但我对此很陌生,所以我无法真正确定它。任何帮助将不胜感激。

编辑:我设法解决了这个问题,只是从头开始该项目并遵循视觉工作室docsthis视频。

c++ mysql visual-studio mysql-connector
1个回答
0
投票

有同样的问题,在添加到链接器 - >输入 - >附加依赖项时修复:'libmysql.lib;'然后将此 'C:\Program Files\MySQL\MySQL Server 8.0\lib\libmysql.lib' 复制到 .sln 文件夹。

© www.soinside.com 2019 - 2024. All rights reserved.