1

一般的に、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: 未解決の外部シンボル "__declspec(dllimport) public: __thiscall sql::SQLString::~SQLString(void)" (__imp_??1SQLString@sql@@QAE@XZ) が関数 __catch$_main$0 で参照されています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) public: virtual __thiscall sql::SQLException::~SQLException(void)" (__imp_ ??1SQLException@sql@@UAE@XZ) が関数 __catch$_main$0 で参照されました

これを修正する方法が本当にわかりません。ライブラリを変更したり、資料、ドキュメントなどを読んだりするなど、ほとんどすべてを試しましたが、何も役に立ちませんでした。どんな助けでも大歓迎です。

4

0 に答える 0