4

MySQL コネクタを使用するコンパイル済みプログラムを C++ で実行しようとすると、少し問題が発生します。コンパイルは問題なく実行できますが、実行するとすぐにクラッシュします。接続する予定の回線でクラッシュするようです。追加のライブラリ、依存関係、プリプロセッサ、およびリンカー入力をすべてセットアップし、リリース ソリューション構成を使用しています。Microsoft Visual Studio 2012 を実行しています。

私が得ているエラーは次のとおりです。

そしてコールスタック:

MyLittleSQL.exe!main() Line 24 C++
MyLittleSQL.exe!__tmainCRTStartup() Line 536 C

24 行目は次のとおりです。

con = driver->connect("tcp://127.0.0.1:3306", "sepples_su", "easy");

完全なソース コードは次のとおりです。

#include <stdlib.h>
#include <iostream>

#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;

int main(void)
{
    try 
    {
        sql::Driver *driver;
        sql::Connection *con;
        sql::Statement *stmt;
        sql::ResultSet *res;

        /* Create a connection */
        driver = get_driver_instance();
        con = driver->connect("tcp://127.0.0.1:3306", "sepples_su", "easy");

        /* Connect to the MySQL test database */
        con->setSchema("test");

        stmt = con->createStatement();
        res = stmt->executeQuery("SELECT 'Hello World!' AS _message");
        while (res->next()) 
        {
            cout << "\t... MySQL replies: ";
            /* Access column data by alias or column name */
            cout << res->getString("_message") << endl;
            cout << "\t... MySQL says it again: ";
            /* Access column fata by numeric offset, 1 is the first column */
            cout << res->getString(1) << endl;
        }

        delete res;
        delete stmt;
        delete con;
    } 
    catch (sql::SQLException &e) 
    {
        cout << "# ERR: SQLException in " << __FILE__;
        cout << "(" << __FUNCTION__ << ") on line " << __LINE__ << endl;
        cout << "# ERR: " << e.what();
        cout << " (MySQL error code: " << e.getErrorCode();
        cout << ", SQLState: " << e.getSQLState() << " )" << endl;
    }

    cout << endl;
    return EXIT_SUCCESS;
}

これは、実際にはコネクタのドキュメントから抜粋した例の 1 つですが、最初に自分のせいではないことを確認したかったのです。

ここで何か助けていただければ幸いです、ありがとう。

4

2 に答える 2

3

@LyubomirVasilev の助けを借りて、Visual Studio 11 (2012) の設定で C++ コネクタを自分でコンパイルしました。他の lib および dll ファイルをここでコンパイルされたものに置き換えると、完全に機能しました。

これを行うための情報は、他の人のためにここにあります: http://dev.mysql.com/doc/refman/5.1/en/connector-cpp-info.html

于 2012-11-29T09:21:01.450 に答える