MySQL 的 C++ 连接器

标签 c++ mysql mysql-connector

编辑:

我的问题是这篇文章底部的错误。

这是我的附加包含目录

C:\Program Files\boost
C:\Program Files\MySQL\MySQL Connector C++ 1.1.3\include
C:\Program Files\MySQL\MySQL Server 5.6\include

其他库目录

C:\Program Files\MySQL\MySQL Server 5.6\lib
C:\Program Files\MySQL\Connector C++ 1.1.2\lib\opt

其他依赖项

libmysql.lib
mysqlcppconn-static.lib

这是我的代码

#include <iostream>
#include <cstdio>
#include <cstdlib>
using namespace std;

#include <stdlib.h>
#include <Windows.h>
#include <mysql.h>
#include "mysql_connection.h"

#include <cppconn/driver.h>
#define host "localhost"
#define username "root"
#define password "root"
#define database "tests"

int main()
{
    MYSQL* conn;
    conn = mysql_init( NULL );
    if( conn )
    {
        mysql_real_connect( conn, host, username, password, database, 0, NULL, 0 );
    }
    MYSQL_RES* res_set;
    MYSQL_ROW row;
    unsigned int i;
    mysql_query( conn, "SELECT * FROM tbl_clients WHERE id = 1" ); 
    res_set = mysql_store_result( conn );
    unsigned int numrows = mysql_num_rows( res_set ); 
    if( numrows )
    {
        row = mysql_fetch_row( res_set );
        if( row != NULL )
        {
            cout << "Client ID  : " << row[0] << endl;
            cout << "Client Name: " << row[1] << endl;
        }
    }
    if( res_set )
    {
        mysql_free_result( res_set );
    }
    if( conn )
    {
        mysql_close( conn );
    }

    return 0;
}

这些是我遇到的错误

1>------ Build started: Project: okay, Configuration: Debug Win32 ------
1>welp.obj : error LNK2019: unresolved external symbol _mysql_num_rows@4 referenced in function _main
1>welp.obj : error LNK2019: unresolved external symbol _mysql_init@4 referenced in function _main
1>welp.obj : error LNK2019: unresolved external symbol _mysql_real_connect@32 referenced in function _main
1>welp.obj : error LNK2019: unresolved external symbol _mysql_query@8 referenced in function _main
1>welp.obj : error LNK2019: unresolved external symbol _mysql_store_result@4 referenced in function _main
1>welp.obj : error LNK2019: unresolved external symbol _mysql_free_result@4 referenced in function _main
1>welp.obj : error LNK2019: unresolved external symbol _mysql_fetch_row@4 referenced in function _main
1>welp.obj : error LNK2019: unresolved external symbol _mysql_close@4 referenced in function _main
1>C:\Users\Damian\documents\visual studio 2012\Projects\okay\Debug\okay.exe : fatal error LNK1120: 8 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

请帮忙,这个项目大约在我的类(class) 48 小时内到期,我花了很多时间试图解决这个问题。

谢谢

最佳答案

尊敬的,您的最后两个问题是编译器/链接器问题。我理解您的沮丧,因为我很早就知道如何编码,但对编译器/链接器一无所知。当您有时间时,请花一些时间阅读以下内容:

  • 标题
  • 二进制文件与目标文件
  • 库/共享对象
  • 编译器
  • 链接器
  • 函数修饰(C 与 C++)

为了回答您的问题,我猜您是在 Microsoft Visual Studio 中执行此操作:

  1. 您需要转到“项目属性”并设置“其他库路径”(我看到您在上一篇文章中做到了这一点)
  2. 您需要指定库,我在这里冒险并假设它将 mysql.lib ...在链接器部分的某处有一个“附加库”输入,您'将能够识别它,因为 kernel32.lib 将对其进行 int 处理。将 mysql.lib 添加到该部分。转至保存二进制文件的 mysql 文件夹来确认名称。
  3. 确保您使用的是静态库,.dll 会给您带来无需担心的新问题。这通常是通过设置正确的库目录来实现的。许多 C++ 库都会附带预编译的“静态”和“动态”文件夹,其中包含正确的库。

关于MySQL 的 C++ 连接器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16455350/

相关文章:

c++ - 如何在不将所有相关代码带到 header 的情况下解决模板成员函数的 undefined reference ?

c++ - 使用动态参数 boost 内存池

c++ - fatal error C1083 : Cannot open include file: 'boost/variant.hpp' : No such file or directory

mysql - java.sql.SQLException : ResultSet is from UPDATE. 无数据。对于所有查询

c++ - 冒泡排序忽略数组的第一个元素

c++ - C++ 中的二进制 .dat 文件问题

mysql准备: session variables vs parameters & local variables

MySQL - 如何将数字分组为 50 增量

mysql - 如何提高Mysql select from big table的速度?

python - 莫名其妙的python mysql连接问题