source

MariaDB를 C++ Application에 연결하기 위한 dll 및 lib 파일을 어떻게 처리할 수 있습니까?

ittop 2023. 8. 30. 22:04
반응형

MariaDB를 C++ Application에 연결하기 위한 dll 및 lib 파일을 어떻게 처리할 수 있습니까?

MariaDB와 C++ 애플리케이션을 연결하는 프로젝트를 진행하려고 합니다.URL은 https://mariadb.com/docs/clients/connector-cpp/ #installing-sysadb-syslog-c-via-syslog-windows입니다.이 URL은 MariaDB를 C++와 연결하기에 매우 좋은 소스입니다.하지만 lib 파일과 dll 파일을 다루는 방법은 설명되어 있지 않습니다.MSI를 통해 MariaDB connector/C++를 설치했을 때 conncpp.hpp, mariadbcpp.dll, mariadbcpp.lib 등 여러 파일이 제공되었습니다.

경로 C:\Program Files(x86)\Microsoft Visual Studio\2019\Community\를 설정하여 mariadb/conncpp.hpp를 포함하려고 했습니다.VC\도구\MSVC\14.28.29910\include와 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;
}

하지만 코드를 컴파일하고 실행할 때마다 Unhandled exception(0x00007)이라고 표시됩니다.FF918058D25(mariadbcpp.dll), MariaDB_Connection.exe): 0xC00005:액세스 위반 읽기 위치 0xFFFFFFFFFFF의 라인에서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"); 속성 맵에 의존하지 않기 때문에 여기서 문제가 발생합니다.

언급URL : https://stackoverflow.com/questions/67260376/how-can-i-deal-with-dll-and-lib-files-for-connecting-mariadb-to-c-application

반응형