[CONCPP-92] try build simple c++ connector + mariadb + mingw/win10-64 Created: 2021-08-20  Updated: 2021-08-24

Status: Open
Project: MariaDB Connector/C++
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Bug Priority: Major
Reporter: meir Assignee: Lawrin Novitsky
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

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))
 


Generated at Thu Feb 08 03:08:16 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.