Uploaded image for project: 'MariaDB Connector/C++'
  1. MariaDB Connector/C++
  2. CONCPP-92

try build simple c++ connector + mariadb + mingw/win10-64

Details

    • Bug
    • Status: Open (View Workflow)
    • Minor
    • Resolution: Unresolved
    • None
    • None
    • None
    • None
    • windows10 64 bit

    Description

      try to build connect a simple program with c++ connector and it fails.
      (linker is missing some component).

      // Includes
      #include <iostream>
      #include <mariadb/conncpp.hpp>
       
      void updateContact(std::shared_ptr<sql::PreparedStatement> &stmnt,
         sql::SQLString first_name,
         sql::SQLString email)
      {
         try
         {
            // Bind variables to prepared statement parameters
            // Note that the index starts at 1--not 0
            stmnt->setString(1, email);
            stmnt->setString(2, first_name);
       
            // Execute Statement
            stmnt->executeUpdate();
         }
       
         // Catch Exception
         catch (sql::SQLException &e)
         {
            std::cerr << "Error updating contact: "
               << e.what() << std::endl;
         }
      }
       
      // 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 to update contacts with a transaction
            try
            {
               // Disabling ``auto-commit`` mode automatically starts a new user managed transaction.
               conn->setAutoCommit(false);
       
               // Create a PreparedStatement
               // Use a smart pointer for extra safety
               std::shared_ptr<sql::PreparedStatement> stmnt(conn->prepareStatement(
                        "UPDATE test.contacts SET email=? WHERE first_name = ?"
                     )
                  );
       
               std::string contacts[3][2] = {
                     { "John", "johnsmith@example.com" },
                     { "Jon", "jonsmith@example.com" },
                     { "Johnny", "johnnysmith@example.com" }
                  };
       
               for (int row { 0 }; row < 3; ++row) {
                  updateContact(stmnt, contacts[row][0], contacts[row][1]);
               }
       
               // Commit the transaction
               conn->commit();
            }
            catch (sql::SQLException &e)
            {
               std::cerr << "Error updating contact with a transaction: "
                  << e.what() << std::endl;
       
               // Rollback the transaction
               conn->rollback();
            }
       
            // Close Connection
            conn->close();
         }
         catch (sql::SQLException &e)
         {
            std::cerr << "SQL exception in MariaDB Platform: "
               << e.what() << std::endl;
       
            // Exit (Failed)
            return 1;
         }
       
         // Exit (Success)
         return 0;
      }
      

      -------------- Build: Debug in testmariadb__1 (compiler: GNU GCC Compiler)---------------
       
      g++.exe -Wall -fexceptions -std=c++11 -g -I"C:\Program Files\MariaDB\MariaDB C++ Connector 64-bit\include" -I"C:\Program Files\MariaDB\MariaDB Connector C 64-bit\include" -I"C:\Program Files\MariaDB\MariaDB Connector C 64-bit\lib" -I"C:\Program Files\MariaDB\MariaDB C++ Connector 64-bit" -c C:\SOFTWARE__MYSQL__MARIADBPP\test__mariadb__2.cpp -o obj\Debug\test__mariadb__2.o
      g++.exe -L"C:\Program Files\MariaDB\MariaDB Connector C 64-bit\lib" -L"C:\Program Files\MariaDB\MariaDB C++ Connector 64-bit" -o bin\Debug\testmariadb__1.exe obj\Debug\test__mariadb__2.o  -static  ..\..\openssl-1.1.1a-win64-mingw\lib\libcrypto.a ..\..\openssl-1.1.1a-win64-mingw\lib\libssl.a "..\..\Program Files\MariaDB\MariaDB Connector C 64-bit\lib\libmariadb.dll" "..\..\Program Files\MariaDB\MariaDB Connector C 64-bit\lib\libmariadb.lib" "..\..\Program Files\MariaDB\MariaDB Connector C 64-bit\lib\mariadbclient.lib" "..\..\Program Files\MariaDB\MariaDB C++ Connector 64-bit\mariadbcpp.lib" "..\..\Program Files\MariaDB\MariaDB C++ Connector 64-bit\mariadbcpp.dll"
      In file included from C:\Program Files\MariaDB\MariaDB C++ Connector 64-bit\include/mariadb/conncpp/Driver.hpp:25,
                       from C:\Program Files\MariaDB\MariaDB C++ Connector 64-bit\include/mariadb/conncpp.hpp:24,
                       from C:\SOFTWARE__MYSQL__MARIADBPP\test__mariadb__2.cpp:6:
      C:\Program Files\MariaDB\MariaDB C++ Connector 64-bit\include/mariadb/conncpp/SQLString.hpp:32: warning: ignoring #pragma warning  [-Wunknown-pragmas]
       #pragma warning(push)
       
      C:\Program Files\MariaDB\MariaDB C++ Connector 64-bit\include/mariadb/conncpp/SQLString.hpp:33: warning: ignoring #pragma warning  [-Wunknown-pragmas]
       #pragma warning(disable:4251)
       
      In file included from C:\Program Files\MariaDB\MariaDB C++ Connector 64-bit\include/mariadb/conncpp/Driver.hpp:25,
                       from C:\Program Files\MariaDB\MariaDB C++ Connector 64-bit\include/mariadb/conncpp.hpp:24,
                       from C:\SOFTWARE__MYSQL__MARIADBPP\test__mariadb__2.cpp:6:
      C:\Program Files\MariaDB\MariaDB C++ Connector 64-bit\include/mariadb/conncpp/SQLString.hpp:111: warning: ignoring #pragma warning  [-Wunknown-pragmas]
       #pragma warning(pop)
       
      obj\Debug\test__mariadb__2.o: In function `main':
      C:/SOFTWARE__MYSQL__MARIADBPP/test__mariadb__2.cpp:37: undefined reference to `__imp__ZN3sql7mariadb19get_driver_instanceEv'
      C:/SOFTWARE__MYSQL__MARIADBPP/test__mariadb__2.cpp:42: undefined reference to `__imp__ZN3sql9SQLStringC1EPKc'
      C:/SOFTWARE__MYSQL__MARIADBPP/test__mariadb__2.cpp:65: undefined reference to `__imp__ZN3sql9SQLStringC1EPKc'
      C:/SOFTWARE__MYSQL__MARIADBPP/test__mariadb__2.cpp:65: undefined reference to `__imp__ZN3sql9SQLStringD1Ev'
      C:/SOFTWARE__MYSQL__MARIADBPP/test__mariadb__2.cpp:74: undefined reference to `__imp__ZN3sql9SQLStringD1Ev'
      C:/SOFTWARE__MYSQL__MARIADBPP/test__mariadb__2.cpp:74: undefined reference to `__imp__ZN3sql9SQLStringD1Ev'
      C:/SOFTWARE__MYSQL__MARIADBPP/test__mariadb__2.cpp:42: undefined reference to `__imp__ZN3sql9SQLStringD1Ev'
      C:/SOFTWARE__MYSQL__MARIADBPP/test__mariadb__2.cpp:48: undefined reference to `__imp__ZN3sql9SQLStringD1Ev'
      obj\Debug\test__mariadb__2.o:C:/SOFTWARE__MYSQL__MARIADBPP/test__mariadb__2.cpp:74: more undefined references to `__imp__ZN3sql9SQLStringD1Ev' follow
      obj\Debug\test__mariadb__2.o: In function `sql::SQLString::SQLString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
      C:/Program Files/MariaDB/MariaDB C++ Connector 64-bit/include/mariadb/conncpp/SQLString.hpp:43: undefined reference to `__imp__ZN3sql9SQLStringC1EPKcy'
      obj\Debug\test__mariadb__2.o: In function `std::pair<sql::SQLString const, sql::SQLString>::~pair()':
      C:/Program Files/CodeBlocks/MinGW/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/stl_pair.h:198: undefined reference to `__imp__ZN3sql9SQLStringD1Ev'
      C:/Program Files/CodeBlocks/MinGW/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/stl_pair.h:198: undefined reference to `__imp__ZN3sql9SQLStringD1Ev'
      obj\Debug\test__mariadb__2.o: In function `std::pair<sql::SQLString const, sql::SQLString>::pair<char const (&) [5], char const (&) [8], true>(char const (&) [5], char const (&) [8])':
      C:/Program Files/CodeBlocks/MinGW/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/stl_pair.h:331: undefined reference to `__imp__ZN3sql9SQLStringC1EPKc'
      C:/Program Files/CodeBlocks/MinGW/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/stl_pair.h:331: undefined reference to `__imp__ZN3sql9SQLStringC1EPKc'
      C:/Program Files/CodeBlocks/MinGW/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/stl_pair.h:331: undefined reference to `__imp__ZN3sql9SQLStringD1Ev'
      obj\Debug\test__mariadb__2.o: In function `std::pair<sql::SQLString const, sql::SQLString>::pair<char const (&) [9], char const (&) [17], true>(char const (&) [9], char const (&) [17])':
      C:/Program Files/CodeBlocks/MinGW/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/stl_pair.h:331: undefined reference to `__imp__ZN3sql9SQLStringC1EPKc'
      C:/Program Files/CodeBlocks/MinGW/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/stl_pair.h:331: undefined reference to `__imp__ZN3sql9SQLStringC1EPKc'
      C:/Program Files/CodeBlocks/MinGW/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/stl_pair.h:331: undefined reference to `__imp__ZN3sql9SQLStringD1Ev'
      obj\Debug\test__mariadb__2.o: In function `std::less<sql::SQLString>::operator()(sql::SQLString const&, sql::SQLString const&) const':
      C:/Program Files/CodeBlocks/MinGW/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/stl_function.h:386: undefined reference to `__imp__ZNK3sql9SQLStringltERKS0_'
      obj\Debug\test__mariadb__2.o: In function `std::pair<sql::SQLString const, sql::SQLString>::pair(std::pair<sql::SQLString const, sql::SQLString> const&)':
      C:/Program Files/CodeBlocks/MinGW/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/stl_pair.h:292: undefined reference to `__imp__ZN3sql9SQLStringC1ERKS0_'
      C:/Program Files/CodeBlocks/MinGW/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/stl_pair.h:292: undefined reference to `__imp__ZN3sql9SQLStringC1ERKS0_'
      C:/Program Files/CodeBlocks/MinGW/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/bits/stl_pair.h:292: undefined reference to `__imp__ZN3sql9SQLStringD1Ev'
      collect2.exe: error: ld returned 1 exit status
      Process terminated with status 1 (0 minute(s), 16 second(s))
      23 error(s), 3 warning(s) (0 minute(s), 16 second(s))
       

      Attachments

        Activity

          Thank you for your report. Technically we do not support mingw, thus I've put priority to Minor.
          The error is that the linker can't find symbols from c/c++ actually. I am actually not sure, but maybe you should try to build c/c++ from source to use in mingw.
          On a side note, our windows binaried does not have dependency on openssl, so you don't need to link it.

          Lawrin Lawrin Novitsky added a comment - Thank you for your report. Technically we do not support mingw, thus I've put priority to Minor. The error is that the linker can't find symbols from c/c++ actually. I am actually not sure, but maybe you should try to build c/c++ from source to use in mingw. On a side note, our windows binaried does not have dependency on openssl, so you don't need to link it.

          People

            Lawrin Lawrin Novitsky
            meirab100 meir
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:

              Git Integration

                Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.