簡體   English   中英

如何處理 dll 和 lib 文件以將 MariaDB 連接到 C++ 應用程序?

[英]How can I deal with dll and lib files for connecting MariaDB to C++ Application?

我正在嘗試將 MariaDB 與 C++ 應用程序連接起來的項目。 我提到了 URL: https://mariadb.com/docs/clients/connector-cpp/#installing-mariadb-connector-c-via-msi-windows 這個 URL 是連接 MariaDB 和 C++ 的一個很好的來源。 但是,它沒有描述如何處理 lib 文件和 dll 文件。 當我通過 MSI 安裝 MariaDB 連接器/C++ 時,它給了我幾個文件:conncpp.hpp、mariadbcpp.dll、mariadbcpp.lib 等。

我試圖通過設置路徑 C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29910\include 來包含 mariadb/conncpp.hpp,我對 lib 文件做了同樣的事情。 另外,我去了屬性並設置了lib文件的鏈接器。 這是我計划執行的代碼:

// Includes
#include <iostream>
#include <mariadb/conncpp.hpp>

// Main Process
int main(int argc, char** argv)
{
    try
    {
        // Instantiate Driver
        sql::Driver* driver = sql::mariadb::get_driver_instance();
    // Configure Connection
    // The URL or TCP connection string format is
    // ``jdbc:mariadb://host:port/database``.
    sql::SQLString url("jdbc:mariadb://192.0.2.1:3306/test");

    // Use a properties map for the user name and password
    sql::Properties properties({
          {"user", "db_user"},
          {"password", "db_user_password"}
        });

    // Establish Connection
    // Use a smart pointer for extra safety
    std::unique_ptr<sql::Connection> conn(driver->connect(url, properties));

    // Use Connection
    // ...

    // Close Connection
    conn->close();
}

// Catch Exceptions
catch (sql::SQLException& e)
{
    std::cerr << "Error Connecting to MariaDB Platform: "
        << e.what() << std::endl;

    // Exit (Failed)
    return 1;
}

// Exit (Success)
return 0;
}

但是,每當我編譯並執行代碼時,它都會在std::unique_ptr<sql::Connection> conn(driver->connect(url, properties)); .

你能告訴我如何解決這個問題嗎?

您遇到了 C++ 連接器 API 的缺陷。 或者稱其為錯誤。 它是 Windows 特定的。 STL 對象的調試和發布版本可能有不同的布局。 將構建切換到發布配置應該會有所幫助。 但是根據使用的 VS 版本,仍然可能出現一些問題。 作為一種解決方法,您還可以嘗試使用其他連接方法,即 std::unique_ptr<sql::Connection> conn(driver->connect(url, "db_user", "db_user_password")); 因為它不依賴於屬性 map,所以會導致這里出現問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM