MySQL数据库连接到c ++ win32项目

时间:2013-12-14 02:50:48

标签: c++ mysql sql winapi visual-c++

我正在尝试将MySQL数据库连接到学校的c ++ Win32项目。我已经完成了visual studio的设置,所有的包含文件和目录,正如我的教授告诉我的那样,这是她告诉我在安装MySQL和连接器之后这样做的当然:

  • Windows Visual Studio

1)如果您使用Microsoft Visual Studio作为c ++编辑器。 一个。转到解决方案资源管理器并右键单击该项目并找到 项目属性。在Configuration Properties中,找到C / C ++和 单击常规,然后在中编辑其他包含目录 右键通过键入这三个头文件的目录 库,例如MySQL Server 5.5的include目录 包括MySQL Connector C ++ 1.1.3的目录和目录 Boost 1.55.0。 湾在Project Properties图的树视图中,打开Linker, 一般,附加图书馆目录。添加$ {MySQL} / lib / opt 将目录放入Additional Library Directories文本字段并添加$ {MySQL_Connector} / lib目录进入附加库 目录文本字段。

之后我编译了,一切都很好,然后我添加了建立连接的代码,它位于按钮click的事件处理程序内。我的#include语句如下所示:

#include "stdafx.h"
#include "AddBook.h"
#include "afxdialogex.h"
#include "resource.h"
#include <windows.system.h>
#include <mysql.h>

#include <mysql_connection.h> 
#include <mysql_driver.h> 

#include <cppconn/driver.h> 
#include <cppconn/exception.h> 
#include <cppconn/resultset.h> 
#include <cppconn/statement.h>

using namespace std;
using namespace sql;
using namespace sql::mysql;

所以她的连接示例就是这个(包含上面的所有包含文件):

int main(void) 
{ 
    //cout << endl; 
    //cout << "Running 'SELECT 'Hello World!' » AS _message'..." << endl; 

    try 
    { 
        sql::Driver *driver; 
        sql::Connection *con; 

    /** 
        * To establish a connection to MySQL Server, 
        * retrieve an instance of sql::Connection from a sql::mysql::MySQL_Driver obj
        */
        driver = get_mysql_driver_instance(); 
        con = driver->connect("tcp://127.0.0.1:3306", "root", "mysql"); 

        /* Example 1: create table and insert records */
   { 
       cout << "To build a connection..." << endl; 
       con = driver->connect("tcp://127.0.0.1:3306", "root", "mysql"); 
       sql::Statement *stmt; 
       sql::ResultSet *res; 
       stmt = con->createStatement(); 
       cout << "To create a table..." << endl; 
       stmt->execute("USE cop2335"); 
       stmt->execute("DROP TABLE IF EXISTS test"); 
       stmt->execute("CREATE TABLE test(id INT, label CHAR(1))"); 
       stmt->execute("INSERT INTO test(id, label) VALUES (1, 'a')"); 
       con->close(); 
} 

但它不起作用。它给了我错误:

错误LNK2019:未解析的外部符号“__declspec(dllimport)public:_ thiscall sql :: SQLString :: ~SQLString(void)”( _imp _ ?? 1SQLString @sql @@ QAE @XZ)

错误LNK2019:未解析的外部符号“__declspec(dllimport)public:__ thiscall sql :: SQLString :: SQLString(char const * const)”(_ imp ?? 0SQLString @sql @@ QAE @ QBD @ Z)

错误LNK2019:未解析的外部符号“__declspec(dllimport)类sql :: mysql :: MySQL_Driver * __cdecl sql :: mysql :: get_driver_instance(void)”(_ imp ?get_driver_instance @ mysql @ sql @@ YAPAVMySQL_Driver @ 12 @XZ)在函数“class sql :: mysql :: MySQL_Driver * __cdecl sql :: mysql :: get_mysql_driver_instance(void)”中引用(?get_mysql_driver_instance @ mysql @sql @@ YAPAVMySQL_Driver @ 12 @XZ)< / p>

这是我的代码(这是给出上述错误的代码)(没有注释// 2下的两行......代码完美编译没有任何问题):

void AddBook::OnBnClickedenterbtnaddbook()
{
sql::mysql::MySQL_Driver *driver; 
    sql::Connection *con; 
//1. get text from dialog textedit box


//2. initialize a DB connection
    driver = sql::mysql::get_mysql_driver_instance();
con = driver->connect("tcp://127.0.0.1:3306", "root", "password");

// 3. update DB
}

我也是这样尝试的:http://www.nitecon.com/tutorials-articles/develop/cpp/c-mysql-beginner-tutorial/

但它给了我同样的错误“Link2019”

我在这里找不到一些东西吗?有没有其他方法将数据库连接到项目?欢迎所有帮助。感谢您阅读。

1 个答案:

答案 0 :(得分:0)

未解析的外部符号通常意味着某些函数具有声明,但不具有定义。

例如

Foo.h

class A {
  void foo1();
  void foo2();
}

Foo.cpp

void A::foo2() {
}

顺便说一句,在您的情况下,您不包含包含定义的lib / dll文件的接缝。