1

Visual Studio 2010 で Visual C++ を使用して mysql 接続を作成したいと考えています。

この質問を何度か見たことがありますが、理解できないようです。

このための本当に便利で簡単なステップバイステップのチュートリアルがないのはなぜですか? そして、つまり、適切なダウンロード リンク、ファイルを保存する場所などです。プロジェクトに追加するファイルと、記述する適切なコード。

多くの異なる C++ コネクタまたは完全なパッケージを使用してみました。しかし、成功せずに。プロパティで「include」フォルダーを「C++ 追加のインクルード ディレクトリ」に追加し、「libmysql.lib」を含む「lib」フォルダーを「リンカーの追加ライブラリ ディレクトリ」に追加し、「libmysql.lib」を「リンカー入力の追加の依存関係」。

次のようなコードを使用してみました:

#include <iostream>
#include <fstream>
#include <vector>
#include "rapidxml.hpp"
#include "rapidxml_print.hpp"
#include "my_global.h" // Include this file first to avoid problems
#include "mysql.h" // MySQL Include File
#include "XMLFile.h"
using namespace std;
using namespace rapidxml;

int main () {

    MYSQL *mysql;
    MYSQL_RES *result;
    MYSQL_ROW row;

    string server = "localhost";
    string username = "root";
    string password = "";
    string database = "test";
    int port = 3306;

    mysql = mysql_init(0);
    if ( !mysql_real_connect( mysql, server.c_str(), username.c_str(), password.c_str(), database.c_str(), port, NULL, 0 ) ) {
        fprintf( stderr, "%s\n", mysql_error( mysql ) );
        return 0;
    }

    //further code should follow but i already get errors

    cin.get();
    return(0);
}

しかし、私はすでに次のようなエラーを受け取ります:

エラー 4 エラー LNK2019: 関数 _main で参照されている未解決の外部シンボル _mysql_error@4

4

3 に答える 3

0

VS 2008 と VS 2010
の間で変更を加える必要がありました。多くの名前が変更されました。変更点の一部を次に示します。

    #if (_MSC_VER == 1600)
    #include "driver/mysql_public_iface.h"
    #else
    #include "mysql_driver.h"
    #endif


namespace sql
{
    class Connection;
#if (_MSC_VER == 1600)
    class Driver;
#endif
    namespace mysql
    {
#if (_MSC_VER != 1600)
        class MySQL_Driver;
#endif      
    }
}


#if (_MSC_VER == 1600)
    mutable sql::Driver *                       m_p_sql_driver;
#else   
    mutable sql::mysql::MySQL_Driver *            m_p_sql_driver;
#endif


    void
    initialize_db_driver() const
    {
        static bool     driver_initialized = false;
        if (!driver_initialized)
        {
            wxMutexLocker   lock(sql_driver_mutex);
            if (!driver_initialized)
            {
                // There is something weird on the Windows 7 -64 bit platform
                //  with Visual Studio 2010 that causes the error message:
                //  "The application was unable to start correctly (0xc000007b)
                //  This is an experiment to see if the MySQL connector is the culprit.
    //          m_p_sql_driver = 0;

                //  When the MySQL Connector C++ is not used, the application starts up
                //      without the error.
    #if (_MSC_VER == 1600)
                m_p_sql_driver = 0;
                sql::Driver * p_driver = sql::mysql::get_driver_instance();
                m_p_sql_driver = p_driver;
    //          m_p_sql_driver = sql::mysql::get_driver_instance();
    #else
                m_p_sql_driver = sql::mysql::get_mysql_driver_instance();
    #endif
                if (m_p_sql_driver)
                {
                    driver_initialized = true;
                }
            }
        }
        return;
    }
于 2012-05-15T19:21:14.820 に答える
0

あなたの VC++ はlibmysql.libリンク プロセスに含まれLinker -> Command Lineていないよう/LIBPATH:"C:\mysql\path\to\mysql\lib" "libmysql.lib"です。さらに、次のような回避策を講じることができ
ます。 1. in Linker Input Additional Dependancies:libmysql.lib存在しない別の名前に名前を変更し、再構築し、リンク エラーがあることを確認しますLINK : fatal error LNK1104: cannot open file 'libmysql.lib'。これにより、link実際にライブラリが見つかることを確認しますlibmysql.lib
2. ステップ 1 の変更を元に戻し、.libmysql.lib へのパスを追加してみてくださいVC++ Directories -> Library Directories

その助けを願っています。

于 2012-05-16T02:06:20.457 に答える
0

それは正しい

「libmysql.lib」をリンカー入力の追加の依存関係に追加する必要があります: project properties> linker> input> additional dependencies 。次に、「c:\windows」などの exe フォルダー (PATH で定義されたフォルダー) に libmysql.dll をコピーします。

あなたの問題は解決されます。

libmysql.dll は、mysql をインストールしたフォルダーにあります。

「mysql.h」ヘッダーを使用する際の問題について上記で述べたこと。コネクタ ++ ヘッダーを使用する場合は異なります。

于 2013-03-15T03:11:15.043 に答える