Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Qt static with MySQL issue
Forum Updated to NodeBB v4.3 + New Features

Qt static with MySQL issue

Scheduled Pinned Locked Moved Solved General and Desktop
50 Posts 4 Posters 23.1k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • Cobra91151C Cobra91151

    @cawlfj

    Hi! Try to include to configure: MYSQL_LIBS="-lmysqlclientMT -lAdvapi32 -lUser32 -lCrypt32 -lGdi32" and also create a simple MySQL test project in VS 2017, for example console app to verify that it works:

    #include <iostream>
    #include <mysql.h>
    #include <openssl/bio.h>
    #include <openssl/ssl.h>
    #include <openssl/err.h>
    using namespace std;
    
    int main()
    {
    	cout << "Hello World!" << endl;
    	cout << "Hello!" << endl;
    	SSL_load_error_strings();
    	ERR_load_BIO_strings();
    	OpenSSL_add_all_algorithms();
    	printf("MySQL client version: %s\n", mysql_get_client_info());
    	system("PAUSE");
    	return 0;
    }
    

    If you still need help, reply here or in chat and I will try to help.

    C Offline
    C Offline
    cawlfj
    wrote on last edited by
    #37

    @Cobra91151 said in Qt static with MySQL issue:

    MT -lAdvapi32 -lUser32 -lCrypt32 -lGdi32

    Many thanks for your instruction . As per your instruction i use below configure

    configure -confirm-license -opensource -release -static -static-runtime -mp -platform win32-msvc -prefix "D:\QT\512M" -sql-mysql MYSQL_PREFIX="C:/mysql" MYSQL_LIBS="-lmysqlclient MT -lAdvapi32 -lUser32 -lCrypt32 -lGdi32" -gui -no-dbus -widgets -qt-zlib -qt-libjpeg -gif -ico -qt-libpng -qt-xkbcommon -qt-freetype -qt-pcre -qt-harfbuzz -opengl desktop -nomake tests -nomake examples -no-compile-examples -skip qttranslations -skip qtserialport -skip qtwebengine -recheck-all

    check the config.log
    there are no the error like below
    LINK : warning LNK4098: 默认库“MSVCRT”与其他库的使用冲突;请使用 /NODEFAULTLIB:library
    mysqlclient.lib(bchange.obj) : warning LNK4049: 已导入本地定义的符号 memmove
    mysqlclient.lib(ctype-tis620.obj) : warning LNK4049: 已导入本地定义的符号 memmove
    mysqlclient.lib(net_serv.obj) : warning LNK4049: 已导入本地定义的符号 memmove
    mysqlclient.lib(client.obj) : warning LNK4049: 已导入本地定义的符号 memmove
    mysqlclient.lib(mf_pack.obj) : warning LNK4049: 已导入本地定义的符号 memmove
    mysqlclient.lib(mf_dirname.obj) : warning LNK4049: 已导入本地定义的符号 memmove
    mysqlclient.lib(libmysql.obj) : warning LNK4217: 本地定义的符号 memmove 在函数 fetch_float_with_conversion 中导入
    mysqlclient.lib(mf_format.obj) : warning LNK4049: 已导入本地定义的符号 memmove"

    these error in config.log file were gone.

    now only 1 error show after configure comandline

    ERROR: Feature 'sql-mysql' was enabled, but the pre-condition 'libs.mysql' failed.

    anther question :
    There is not blank before MT in your list command ?
    Try to include to configure: MYSQL_LIBS="-lmysqlclientMT -lAdvapi32 -lUser32 -lCrypt32 -lGdi32" and also create a simple MySQL test project in VS 2017, for example console app to verify that it works:

    1 Reply Last reply
    0
    • Cobra91151C Cobra91151

      @cawlfj

      Hi! Try to include to configure: MYSQL_LIBS="-lmysqlclientMT -lAdvapi32 -lUser32 -lCrypt32 -lGdi32" and also create a simple MySQL test project in VS 2017, for example console app to verify that it works:

      #include <iostream>
      #include <mysql.h>
      #include <openssl/bio.h>
      #include <openssl/ssl.h>
      #include <openssl/err.h>
      using namespace std;
      
      int main()
      {
      	cout << "Hello World!" << endl;
      	cout << "Hello!" << endl;
      	SSL_load_error_strings();
      	ERR_load_BIO_strings();
      	OpenSSL_add_all_algorithms();
      	printf("MySQL client version: %s\n", mysql_get_client_info());
      	system("PAUSE");
      	return 0;
      }
      

      If you still need help, reply here or in chat and I will try to help.

      C Offline
      C Offline
      cawlfj
      wrote on last edited by
      #38

      @Cobra91151
      Cloud you give me a copy of mysqlclient.lib qsqlmysql.lib qsqlmysql.prl build by youself with vs2017 x64? my email tigerlfj@126.com
      i think the mysqlclient.lib download from web is not for vs2017.
      bast regards,
      jeff

      Cobra91151C 2 Replies Last reply
      0
      • C cawlfj

        @Cobra91151
        Cloud you give me a copy of mysqlclient.lib qsqlmysql.lib qsqlmysql.prl build by youself with vs2017 x64? my email tigerlfj@126.com
        i think the mysqlclient.lib download from web is not for vs2017.
        bast regards,
        jeff

        Cobra91151C Offline
        Cobra91151C Offline
        Cobra91151
        wrote on last edited by
        #39

        @cawlfj

        Hi! I use Qt 5.9.7 and OpenSSL libs: 1.0.2l and MySQL: 5.7.23 because of the compatibility with Win Vista and later. I think it should be better for you to use latest versions of OpenSSL and MySQL to configure Qt 5.12.

        By the way, mysqlclientMT is the name of the MySQL static lib compiled with /MT flag.

        Change the instruction in configure to:

        MYSQL_LIBS="-lmysqlclient -lAdvapi32 -lUser32 -lCrypt32 -lGdi32"

        C 1 Reply Last reply
        0
        • C cawlfj

          @Cobra91151
          Cloud you give me a copy of mysqlclient.lib qsqlmysql.lib qsqlmysql.prl build by youself with vs2017 x64? my email tigerlfj@126.com
          i think the mysqlclient.lib download from web is not for vs2017.
          bast regards,
          jeff

          Cobra91151C Offline
          Cobra91151C Offline
          Cobra91151
          wrote on last edited by Cobra91151
          #40

          @cawlfj

          Also, this error: ERROR: Feature 'sql-mysql' was enabled, but the pre-condition 'libs.mysql' failed. points that your MySQL libs path is wrong in the Qt configure.

          For example:
          my include path and libs path: -I "C:\MySQL\mysql-5.7.23-winx64\release\include" -L "C:\MySQL\mysql-5.7.23-winx64\release\lib"

          Remove the MYSQL_PREFIX="C:/mysql" instruction and change to your paths appropriately.

          Also, I suggest you to create a batch script for Qt compilation.

          1 Reply Last reply
          0
          • Cobra91151C Cobra91151

            @cawlfj

            Hi! I use Qt 5.9.7 and OpenSSL libs: 1.0.2l and MySQL: 5.7.23 because of the compatibility with Win Vista and later. I think it should be better for you to use latest versions of OpenSSL and MySQL to configure Qt 5.12.

            By the way, mysqlclientMT is the name of the MySQL static lib compiled with /MT flag.

            Change the instruction in configure to:

            MYSQL_LIBS="-lmysqlclient -lAdvapi32 -lUser32 -lCrypt32 -lGdi32"

            C Offline
            C Offline
            cawlfj
            wrote on last edited by
            #41

            @Cobra91151
            I try again and got the finally without error. but the qsqlmysql.lib is very small(only 798k).
            can't use .

            Cobra91151C 1 Reply Last reply
            0
            • C cawlfj

              @Cobra91151
              I try again and got the finally without error. but the qsqlmysql.lib is very small(only 798k).
              can't use .

              Cobra91151C Offline
              Cobra91151C Offline
              Cobra91151
              wrote on last edited by
              #42

              @cawlfj

              Ok. Here are instructions how to build:

              1. Download the MySQL source from https://dev.mysql.com/downloads/mysql/
              2. Get the OpenSSL source from https://openssl.org/source/openssl-1.0.2l.tar.gz
              3. Extract all archives
              4. Compile static OpenSSL
              5. Compile static MySQL with previously compiled OpenSSL libs

              Read the MySQL and OpenSSL (https://wiki.openssl.org/index.php/Compilation_and_Installation#PREFIX_and_OPENSSLDIR) docs for more details.

              C 2 Replies Last reply
              0
              • Cobra91151C Cobra91151

                @cawlfj

                Ok. Here are instructions how to build:

                1. Download the MySQL source from https://dev.mysql.com/downloads/mysql/
                2. Get the OpenSSL source from https://openssl.org/source/openssl-1.0.2l.tar.gz
                3. Extract all archives
                4. Compile static OpenSSL
                5. Compile static MySQL with previously compiled OpenSSL libs

                Read the MySQL and OpenSSL (https://wiki.openssl.org/index.php/Compilation_and_Installation#PREFIX_and_OPENSSLDIR) docs for more details.

                C Offline
                C Offline
                cawlfj
                wrote on last edited by
                #43

                @Cobra91151
                Many thanks for your help.
                I will have a try.

                1 Reply Last reply
                1
                • Cobra91151C Cobra91151

                  @cawlfj

                  Ok. Here are instructions how to build:

                  1. Download the MySQL source from https://dev.mysql.com/downloads/mysql/
                  2. Get the OpenSSL source from https://openssl.org/source/openssl-1.0.2l.tar.gz
                  3. Extract all archives
                  4. Compile static OpenSSL
                  5. Compile static MySQL with previously compiled OpenSSL libs

                  Read the MySQL and OpenSSL (https://wiki.openssl.org/index.php/Compilation_and_Installation#PREFIX_and_OPENSSLDIR) docs for more details.

                  C Offline
                  C Offline
                  cawlfj
                  wrote on last edited by
                  #44

                  @Cobra91151

                  I use below steps and got the openssl

                  1:download openssl-1.0.2l
                  2: cd c:\openssl-10.2l
                  3:perl Configure VC-WIN64A no-asm --prefix=c:/QtOpenSSL64
                  4:ms\do_win64a
                  5:nmake -f ms\nt.mak
                  6: nmake -f ms\nt.mak test if dispaly passed all tests at last row means ok
                  7:nmake -f ms\nt.mak install
                  There are 2 libs in c:\QtOpenSSL64\lib libeay32.lib ssleay32.lib

                  I don't know how to next step mark in your instruction
                  5:Compile static MySQL with previously compiled OpenSSL libs
                  Cloud you give me more details?
                  Many thanks.

                  C 1 Reply Last reply
                  0
                  • C cawlfj

                    @Cobra91151

                    I use below steps and got the openssl

                    1:download openssl-1.0.2l
                    2: cd c:\openssl-10.2l
                    3:perl Configure VC-WIN64A no-asm --prefix=c:/QtOpenSSL64
                    4:ms\do_win64a
                    5:nmake -f ms\nt.mak
                    6: nmake -f ms\nt.mak test if dispaly passed all tests at last row means ok
                    7:nmake -f ms\nt.mak install
                    There are 2 libs in c:\QtOpenSSL64\lib libeay32.lib ssleay32.lib

                    I don't know how to next step mark in your instruction
                    5:Compile static MySQL with previously compiled OpenSSL libs
                    Cloud you give me more details?
                    Many thanks.

                    C Offline
                    C Offline
                    cawlfj
                    wrote on last edited by cawlfj
                    #45

                    @cawlfj
                    after got openssl by above 1-7.
                    8 :I download mysql connector c " mysql-connector-c-6.1.11-src.zip"
                    9: build it by cmake-gui and then got mysqlclient.lib
                    10: use below configure command, can see the openssl is yes but mysql is still erro
                    ERROR: Feature 'sql-mysql' was enabled, but the pre-condition 'libs.mysql' failed.

                    configure -confirm-license -opensource -release -static -static-runtime -mp -platform win32-msvc -prefix "D:\QT\512M" -openssl-linked OPENSSL_PREFIX=C:\QtOpenSSL64 OPENSSL_LIBS="-lssleay32 -llibeay32 -lgdi32" -sql-mysql MYSQL_PREFIX=C:\mysql MYSQL_LIBS="-lmysqlclient -lAdvapi32 -lUser32 -lCrypt32 -lGdi32" -gui -no-dbus -widgets -qt-zlib -qt-libjpeg -gif -ico -qt-libpng -qt-xkbcommon -qt-freetype -qt-pcre -qt-harfbuzz -opengl desktop -nomake tests -nomake examples -no-compile-examples -skip qttranslations -skip qtserialport -skip qtwebengine -recheck-all

                    Cobra91151C 1 Reply Last reply
                    0
                    • C cawlfj

                      @cawlfj
                      after got openssl by above 1-7.
                      8 :I download mysql connector c " mysql-connector-c-6.1.11-src.zip"
                      9: build it by cmake-gui and then got mysqlclient.lib
                      10: use below configure command, can see the openssl is yes but mysql is still erro
                      ERROR: Feature 'sql-mysql' was enabled, but the pre-condition 'libs.mysql' failed.

                      configure -confirm-license -opensource -release -static -static-runtime -mp -platform win32-msvc -prefix "D:\QT\512M" -openssl-linked OPENSSL_PREFIX=C:\QtOpenSSL64 OPENSSL_LIBS="-lssleay32 -llibeay32 -lgdi32" -sql-mysql MYSQL_PREFIX=C:\mysql MYSQL_LIBS="-lmysqlclient -lAdvapi32 -lUser32 -lCrypt32 -lGdi32" -gui -no-dbus -widgets -qt-zlib -qt-libjpeg -gif -ico -qt-libpng -qt-xkbcommon -qt-freetype -qt-pcre -qt-harfbuzz -opengl desktop -nomake tests -nomake examples -no-compile-examples -skip qttranslations -skip qtserialport -skip qtwebengine -recheck-all

                      Cobra91151C Offline
                      Cobra91151C Offline
                      Cobra91151
                      wrote on last edited by
                      #46

                      @cawlfj

                      Hi! The problem is that you use MySQL connector. But instead you should download this one:

                      alt text

                      Extract it and build it with OpenSSL libs (which you previously built).

                      Also read it:

                      @Cobra91151 said in Qt static with MySQL issue:

                      @cawlfj

                      Also, this error: ERROR: Feature 'sql-mysql' was enabled, but the pre-condition 'libs.mysql' failed. points that your MySQL libs path is wrong in the Qt configure.

                      For example:
                      my include path and libs path: -I "C:\MySQL\mysql-5.7.23-winx64\release\include" -L "C:\MySQL\mysql-5.7.23-winx64\release\lib"

                      Remove the MYSQL_PREFIX="C:/mysql" instruction and change to your paths appropriately.

                      Also, I suggest you to create a batch script for Qt compilation.

                      C 1 Reply Last reply
                      0
                      • Cobra91151C Cobra91151

                        @cawlfj

                        Hi! The problem is that you use MySQL connector. But instead you should download this one:

                        alt text

                        Extract it and build it with OpenSSL libs (which you previously built).

                        Also read it:

                        @Cobra91151 said in Qt static with MySQL issue:

                        @cawlfj

                        Also, this error: ERROR: Feature 'sql-mysql' was enabled, but the pre-condition 'libs.mysql' failed. points that your MySQL libs path is wrong in the Qt configure.

                        For example:
                        my include path and libs path: -I "C:\MySQL\mysql-5.7.23-winx64\release\include" -L "C:\MySQL\mysql-5.7.23-winx64\release\lib"

                        Remove the MYSQL_PREFIX="C:/mysql" instruction and change to your paths appropriately.

                        Also, I suggest you to create a batch script for Qt compilation.

                        C Offline
                        C Offline
                        cawlfj
                        wrote on last edited by
                        #47

                        @Cobra91151
                        Dear Cobora91151
                        Use mysql connector c and modify the mysql_version.h.in to mysql_version.h
                        after configure , the mysql is display yes.
                        But after build whole qt , the qsqlmysql.lib is not present.
                        I will try mysql community server 8.0.13 .

                        Cobra91151C 1 Reply Last reply
                        0
                        • C cawlfj

                          @Cobra91151
                          Dear Cobora91151
                          Use mysql connector c and modify the mysql_version.h.in to mysql_version.h
                          after configure , the mysql is display yes.
                          But after build whole qt , the qsqlmysql.lib is not present.
                          I will try mysql community server 8.0.13 .

                          Cobra91151C Offline
                          Cobra91151C Offline
                          Cobra91151
                          wrote on last edited by Cobra91151
                          #48

                          @cawlfj

                          I never used MySQL connector, it's only confuses. Open VS 2017 x64 command prompt and navigate to the MySQL source dir and enter these instructions:

                          cmake -DBUILD_SHARED_LIBS=OFF -DLINK_STATIC_RUNTIME_LIBRARIES=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST="C:\Boost" -DWITH_SSL="C:\OpenSSL\openssl-1.0.2l\x64\release" -DOPENSSL_LIBRARY="C:\OpenSSL\openssl-1.0.2l\x64\release\lib\ssleay32MT.lib" -DCRYPTO_LIBRARY="C:\OpenSSL\openssl-1.0.2l\x64\release\lib\libeay32MT.lib" -G "Visual Studio 15 2017 Win64"

                          Change all OpenSSL paths to appropriate yours and follow the instructions from the output. Then open compiled project in the VS 2017 and build it all. After that, you will see mysqlclient lib.

                          Note 1: The only MySQL static lib is mysqlclient.lib
                          Note 2: Check your MySQL libs are compiled with /MT flags with VS 2017 and also before the Qt compilation I suggest to check if it works by creating simple console project.

                          Happy New Year!

                          C 1 Reply Last reply
                          1
                          • Cobra91151C Cobra91151

                            @cawlfj

                            I never used MySQL connector, it's only confuses. Open VS 2017 x64 command prompt and navigate to the MySQL source dir and enter these instructions:

                            cmake -DBUILD_SHARED_LIBS=OFF -DLINK_STATIC_RUNTIME_LIBRARIES=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST="C:\Boost" -DWITH_SSL="C:\OpenSSL\openssl-1.0.2l\x64\release" -DOPENSSL_LIBRARY="C:\OpenSSL\openssl-1.0.2l\x64\release\lib\ssleay32MT.lib" -DCRYPTO_LIBRARY="C:\OpenSSL\openssl-1.0.2l\x64\release\lib\libeay32MT.lib" -G "Visual Studio 15 2017 Win64"

                            Change all OpenSSL paths to appropriate yours and follow the instructions from the output. Then open compiled project in the VS 2017 and build it all. After that, you will see mysqlclient lib.

                            Note 1: The only MySQL static lib is mysqlclient.lib
                            Note 2: Check your MySQL libs are compiled with /MT flags with VS 2017 and also before the Qt compilation I suggest to check if it works by creating simple console project.

                            Happy New Year!

                            C Offline
                            C Offline
                            cawlfj
                            wrote on last edited by
                            #49

                            @Cobra91151
                            Dear Cobra91151
                            As per your instruction , i got mysqlclient.lib (seems it right 33m)
                            Now ,i am doing the command jom -j8 to get qt build.

                            The version will be got in 2019.:)
                            Many thanks for your help!

                            Happy New Year!

                            1 Reply Last reply
                            1
                            • C Offline
                              C Offline
                              cawlfj
                              wrote on last edited by
                              #50

                              @Cobra91151
                              Happy New Year!
                              Many thanks for your help.
                              I got the right qsqlmysql.lib, now everything is ok!

                              1 Reply Last reply
                              1

                              • Login

                              • Login or register to search.
                              • First post
                                Last post
                              0
                              • Categories
                              • Recent
                              • Tags
                              • Popular
                              • Users
                              • Groups
                              • Search
                              • Get Qt Extensions
                              • Unsolved