我一直在尝试让 MySQL 与 Visual Studio 2012 和 Windows (x86) 一起工作。我在 Linux 上没有问题,但是,我在 Windows 上遇到了很多错误。这是我的代码(我从某个站点复制来测试它是否真的不起作用)
#include <stdafx.h>
#include <iostream>
#include <cstdlib>
#include <string>
#include "mysql_connection.h"
#include "mysql_driver.h"
#include <cppconn/exception.h>
#include <cppconn/resultset.h>
#include <cppconn/statement.h>
#include <cppconn/prepared_statement.h>
using namespace std;
const string server = "tcp://somemysqlserver.com";
const string username = "someusers";
const string password = "somepass";
int main()
{
sql::Driver *driver;
sql::Connection *dbConn;
sql::Statement *stmt;
sql::ResultSet *res;
try
{
driver = get_driver_instance();
}
catch (sql::SQLException e)
{
cout << "Could not get a database driver. Error message: " << e.what() << endl;
system("pause");
exit(1);
}
try
{
dbConn = driver->connect(server, username, password);
}
catch (sql::SQLException e)
{
cout << "Could not connect to database. Error message: " << e.what() << endl;
system("pause");
exit(1);
}
stmt = dbConn->createStatement();
try
{
stmt->execute("USE mysql");
res = stmt->executeQuery("show tables");
}
catch (sql::SQLException e)
{
cout << "SQL error. Error message: " << e.what() << endl;
system("pause");
exit(1);
}
while (res->next())
{
cout << res->getString(1) << endl;
}
delete res;
delete stmt;
delete dbConn;
system("pause");
return 0;
}
问题首先是 config.h 中的一些错误(第 60 行,似乎是一个流行的错误)。我试过这个,没有用,但问题以某种方式自行解决。现在我收到以下错误:
ConsoleApplication1.obj:错误 LNK2019:函数 __catch$_main$0 中引用的无法解析的外部符号“__declspec(dllimport) public: __thiscall sql::SQLString::~SQLString(void)”(__imp_??1SQLString@sql@@QAE@XZ) 1>
ConsoleApplication1.obj:错误 LNK2019:无法解析的外部符号“__declspec(dllimport) public: __thiscall sql::SQLString::SQLString(class std::basic_string,class std::allocator > const &)”(__imp_??0SQLString@sql@ @QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) 在函数 __catch$_main$0 1> ConsoleApplication1.obj 中引用:
错误 LNK2019:未解析的外部符号“__declspec(dllimport) public: __thiscall sql::SQLString::SQLString(char const * const)”(__imp_??0SQLString@sql@@QAE@QBD@Z) 在函数 __catch$_main$2 中引用1>
ConsoleApplication1.obj : 错误 LNK2019: 无法解析的外部符号 >"__declspec(dllimport) public: class std::basic_string,class std::allocator > const & __thiscall sql::SQLString::asStdString(void)const " (__imp_?asStdString@ SQLString@sql@@QBEABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) 在函数“class std::basic_ostream > & __cdecl std:: operator<<(class std::basic_ostream > &,class sql::SQLString const &)" (??6std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@ABVSQLString@sql @@@Z) 1>
ConsoleApplication1.obj:错误 LNK2019:未解析的外部符号 __imp__get_driver_instance 在函数 _main 1>ConsoleApplication1.obj 中引用:错误 LNK2019:未解析的外部符号“__declspec(dllimport)公共:虚拟 __thiscall sql::SQLException::~SQLException(void)”(__imp_ ??1SQLException@sql@@UAE@XZ) 在函数 __catch$_main$0 中引用
我真的不知道如何解决这个问题,我已经尝试了几乎所有的东西,比如更改库或阅读东西、文档等,没有任何帮助。任何帮助将不胜感激。