Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. General talk
  3. Qt 6
  4. Problems encountered when I use vs2022+qt6 static compilation
Forum Updated to NodeBB v4.3 + New Features

Problems encountered when I use vs2022+qt6 static compilation

Scheduled Pinned Locked Moved Solved Qt 6
19 Posts 6 Posters 2.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.
  • I Offline
    I Offline
    injertao
    wrote on 14 Jun 2022, 04:55 last edited by
    #1

    vs2022 + Qt6.3 static
    Question 1:When I try to set /mt to generate release x64 in c++, I get the following prompt:
    'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MT_StaticRelease'

    But I have modified 6.3.0\Src\qtbase\mkspecs\common\msvc-desktop.conf
    QMAKE_CFLAGS_RELEASE = $$QMAKE_CFLAGS_OPTIMIZE -MT
    QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_OPTIMIZE -Zi -MT
    QMAKE_CFLAGS_DEBUG = -Zi -MTd

    When I run configure.bat parameters:
    -debug-and-release -mp -opensource -confirm-license
    I think I have completed all the operations. Is there any omission?

    Question 2:When I use /md, the generated exe size reaches 14m. Is this normal? How can I further reduce its size?

    My mother tongue is not English, so communication and reading are not very smooth. Maybe there are some solutions I need in other people's posts, but I have studied for 2 days and can't fully understand them

    thanks you

    1 Reply Last reply
    0
    • K Offline
      K Offline
      kkoehne
      Moderators
      wrote on 14 Jun 2022, 14:28 last edited by
      #2

      @injertao said in Problems encountered when I use vs2022+qt6 static compilation:

      Question 1:When I try to set /mt to generate release x64 in c++, I get the following prompt:
      'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MT_StaticRelease'
      But I have modified 6.3.0\Src\qtbase\mkspecs\common\msvc-desktop.conf

      Note that Qt itself is not built with qmake, but CMake. To build Qt itself with a static runtime (/mt), pass '-static-runtime' to configure.

      Question 2:When I use /md, the generated exe size reaches 14m. Is this normal? How can I further reduce its size?

      I assume you're talking about 14 MB? This obviously largely depends on which Qt modules you use ... You might furthermore reduce the size by diabling features (look into -list-features argument for configure). Anyhow, this can open a can of worms, and only few features have a noticeable impact...

      Director R&D, The Qt Company

      I 1 Reply Last reply 14 Jun 2022, 15:29
      1
      • K kkoehne
        14 Jun 2022, 14:28

        @injertao said in Problems encountered when I use vs2022+qt6 static compilation:

        Question 1:When I try to set /mt to generate release x64 in c++, I get the following prompt:
        'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MT_StaticRelease'
        But I have modified 6.3.0\Src\qtbase\mkspecs\common\msvc-desktop.conf

        Note that Qt itself is not built with qmake, but CMake. To build Qt itself with a static runtime (/mt), pass '-static-runtime' to configure.

        Question 2:When I use /md, the generated exe size reaches 14m. Is this normal? How can I further reduce its size?

        I assume you're talking about 14 MB? This obviously largely depends on which Qt modules you use ... You might furthermore reduce the size by diabling features (look into -list-features argument for configure). Anyhow, this can open a can of worms, and only few features have a noticeable impact...

        I Offline
        I Offline
        injertao
        wrote on 14 Jun 2022, 15:29 last edited by
        #3

        @kkoehne Thank you for your reply
        I used -static
        see:-static -debug-and-release -mp -opensource -confirm-license -optimize-size
        b7c95207-e616-4f46-b4dd-6e0c1942397e-image.png

        I can compile static normally, but when I change C++ to /MT, I get an error:

        'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MT_StaticRelease'

        C 1 Reply Last reply 14 Jun 2022, 17:41
        0
        • I injertao
          14 Jun 2022, 15:29

          @kkoehne Thank you for your reply
          I used -static
          see:-static -debug-and-release -mp -opensource -confirm-license -optimize-size
          b7c95207-e616-4f46-b4dd-6e0c1942397e-image.png

          I can compile static normally, but when I change C++ to /MT, I get an error:

          'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MT_StaticRelease'

          C Offline
          C Offline
          Christian Ehrlicher
          Lifetime Qt Champion
          wrote on 14 Jun 2022, 17:41 last edited by
          #4

          @injertao said in Problems encountered when I use vs2022+qt6 static compilation:

          I used -static

          '-static-runtime'

          These are two different kind of things. You compile with a static runtime (MT) therefore you also have to compile Qt with a static runtime as @kkoehne told you.

          Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
          Visit the Qt Academy at https://academy.qt.io/catalog

          I 1 Reply Last reply 15 Jun 2022, 03:54
          3
          • C Christian Ehrlicher
            14 Jun 2022, 17:41

            @injertao said in Problems encountered when I use vs2022+qt6 static compilation:

            I used -static

            '-static-runtime'

            These are two different kind of things. You compile with a static runtime (MT) therefore you also have to compile Qt with a static runtime as @kkoehne told you.

            I Offline
            I Offline
            injertao
            wrote on 15 Jun 2022, 03:54 last edited by
            #5

            @Christian-Ehrlicher I successfully built QT using -static -static runtime, and vs2022 successfully generated a simple exe, but this exe cannot run normally on win7 x64,


            QtWidgetsApplication1. exe - System Error


            The program can't start because api-ms-win-shcore-scaling-l1-1-1. dll is missing from your computer. Try reinstalling the program to fix this problem.


            OK


            How can I further solve this problem? I hope my exe can run without any explicit DLL.

            thanks u

            K 1 Reply Last reply 15 Jun 2022, 09:58
            0
            • I Offline
              I Offline
              injertao
              wrote on 15 Jun 2022, 05:17 last edited by injertao
              #6

              @kkoehne @Christian-Ehrlicher
              Please help me.

              SET VS_ENVIRONMENT="C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Auxiliary\Build\vcvars64.bat"
              SET SRC_DIR="C:\Work\Qt\6.3.0\Src"
              SET BUILD_DIR="C:\Work\Qt\6.3.0\Build"
              SET INSTALL_DIR="C:\Work\Qt\6.3.0\msvc2019_64_static_size"
              SET CONFIGURE_OPTIONS=-debug-and-release -mp -opensource -confirm-license -static -static-runtime -optimize-size

              call %VS_ENVIRONMENT%
              mkdir %BUILD_DIR%
              mkdir %INSTALL_DIR%
              cd %BUILD_DIR%
              call %SRC_DIR%\configure -prefix %INSTALL_DIR% %CONFIGURE_OPTIONS%
              cmake --build . --parallel
              cmake --install .
              cmake --install . --config Debug
              cd %INSTALL_DIR%
              rmdir %BUILD_DIR% /Q /S
              pause

              configure return:
              38e0f412-d319-4662-8efb-8eec1178a872-image.png

              1 Reply Last reply
              0
              • hskoglundH Online
                hskoglundH Online
                hskoglund
                wrote on 15 Jun 2022, 05:56 last edited by
                #7

                Hi, the error "No space left on device" means your C: drive is full :-(
                Try removing some stuff

                I 1 Reply Last reply 15 Jun 2022, 05:58
                0
                • hskoglundH hskoglund
                  15 Jun 2022, 05:56

                  Hi, the error "No space left on device" means your C: drive is full :-(
                  Try removing some stuff

                  I Offline
                  I Offline
                  injertao
                  wrote on 15 Jun 2022, 05:58 last edited by
                  #8

                  @hskoglund I'm stupid, but my C drive has 100GB, isn't that enough?

                  JonBJ 1 Reply Last reply 15 Jun 2022, 06:03
                  0
                  • I injertao
                    15 Jun 2022, 05:58

                    @hskoglund I'm stupid, but my C drive has 100GB, isn't that enough?

                    JonBJ Offline
                    JonBJ Offline
                    JonB
                    wrote on 15 Jun 2022, 06:03 last edited by JonB
                    #9

                    @injertao
                    Yeah, that really should be plenty :) Re-verify you still have that much space left. It's possible that error message is "misleading". Can you manage to copy the file in question from/to the exact paths in the message? Is there some issue creating the destination path?

                    I 1 Reply Last reply 15 Jun 2022, 10:01
                    0
                    • I injertao
                      15 Jun 2022, 03:54

                      @Christian-Ehrlicher I successfully built QT using -static -static runtime, and vs2022 successfully generated a simple exe, but this exe cannot run normally on win7 x64,


                      QtWidgetsApplication1. exe - System Error


                      The program can't start because api-ms-win-shcore-scaling-l1-1-1. dll is missing from your computer. Try reinstalling the program to fix this problem.


                      OK


                      How can I further solve this problem? I hope my exe can run without any explicit DLL.

                      thanks u

                      K Offline
                      K Offline
                      kkoehne
                      Moderators
                      wrote on 15 Jun 2022, 09:58 last edited by
                      #10

                      @injertao said in Problems encountered when I use vs2022+qt6 static compilation:

                      I successfully built QT using -static -static runtime, and vs2022 successfully generated a simple exe, but this exe cannot run normally on win7 x64

                      Please note Qt 6 only supports Windows 10.

                      Director R&D, The Qt Company

                      I 1 Reply Last reply 15 Jun 2022, 10:16
                      0
                      • JonBJ JonB
                        15 Jun 2022, 06:03

                        @injertao
                        Yeah, that really should be plenty :) Re-verify you still have that much space left. It's possible that error message is "misleading". Can you manage to copy the file in question from/to the exact paths in the message? Is there some issue creating the destination path?

                        I Offline
                        I Offline
                        injertao
                        wrote on 15 Jun 2022, 10:01 last edited by
                        #11

                        @JonB Thanks, I'm rebuilding(This may take up to 2 hours), but my problem is still that I can't run my EXE on Windows 7 X64 and shrink it perfectly

                        1 Reply Last reply
                        0
                        • K Offline
                          K Offline
                          kkoehne
                          Moderators
                          wrote on 15 Jun 2022, 10:03 last edited by
                          #12

                          @injertao said in Problems encountered when I use vs2022+qt6 static compilation:

                          SET CONFIGURE_OPTIONS=-debug-and-release -mp -opensource -confirm-license -static -static-runtime -optimize-size
                          [...]
                          @hskoglund I'm stupid, but my C drive has 100GB, isn't that enough?

                          Well, you're asking for a static debug build + static release build of all of Qt. If you combine static with debug, executable sizes add up quite fast :)

                          Do you really need the debug build?

                          Director R&D, The Qt Company

                          I 1 Reply Last reply 15 Jun 2022, 10:29
                          0
                          • K kkoehne
                            15 Jun 2022, 09:58

                            @injertao said in Problems encountered when I use vs2022+qt6 static compilation:

                            I successfully built QT using -static -static runtime, and vs2022 successfully generated a simple exe, but this exe cannot run normally on win7 x64

                            Please note Qt 6 only supports Windows 10.

                            I Offline
                            I Offline
                            injertao
                            wrote on 15 Jun 2022, 10:16 last edited by
                            #13

                            @kkoehne thanks
                            What is the last version to support Windows 7 x64?
                            I have a strange problem.
                            96db3558-b487-473c-ab2a-32276b20a498-image.png

                            I have 100GB on my hard drive

                            1 Reply Last reply
                            0
                            • K Offline
                              K Offline
                              kkoehne
                              Moderators
                              wrote on 15 Jun 2022, 10:20 last edited by
                              #14

                              @injertao said in Problems encountered when I use vs2022+qt6 static compilation:

                              What is the last version to support Windows 7 x64?

                              Qt 5.15

                              have 100GB on my hard drive

                              Check your file system. Is there enough space left?

                              Director R&D, The Qt Company

                              1 Reply Last reply
                              0
                              • K kkoehne
                                15 Jun 2022, 10:03

                                @injertao said in Problems encountered when I use vs2022+qt6 static compilation:

                                SET CONFIGURE_OPTIONS=-debug-and-release -mp -opensource -confirm-license -static -static-runtime -optimize-size
                                [...]
                                @hskoglund I'm stupid, but my C drive has 100GB, isn't that enough?

                                Well, you're asking for a static debug build + static release build of all of Qt. If you combine static with debug, executable sizes add up quite fast :)

                                Do you really need the debug build?

                                I Offline
                                I Offline
                                injertao
                                wrote on 15 Jun 2022, 10:29 last edited by
                                #15

                                @kkoehne thanks
                                My operation is in VMWARE, there is only one C drive, I am sure it has 113GB left

                                1 Reply Last reply
                                0
                                • hskoglundH Online
                                  hskoglundH Online
                                  hskoglund
                                  wrote on 15 Jun 2022, 12:32 last edited by
                                  #16

                                  Hi, iperhaps iit is because your host OS has no space left (even thougjh your C: drive inside VMWare is ok)
                                  This can happen when you tell VMWare to dynamically allocate space for the C: drive (i.e. not a fixed size C:)

                                  I 1 Reply Last reply 16 Jun 2022, 07:09
                                  0
                                  • cristian-adamC Offline
                                    cristian-adamC Offline
                                    cristian-adam
                                    wrote on 15 Jun 2022, 13:28 last edited by
                                    #17

                                    Note that Qt6 applications, even compiled statically, won't run on Windows 7.

                                    If you really want to achieve this, you need to patch Qt6, see details at https://forum.qt.io/topic/133002/qt-creator-6-0-1-and-qt-6-2-2-running-on-windows-7

                                    If you run out of disk space, you can set the NTFS compression flag of your build directory.

                                    I 1 Reply Last reply 16 Jun 2022, 07:19
                                    1
                                    • hskoglundH hskoglund
                                      15 Jun 2022, 12:32

                                      Hi, iperhaps iit is because your host OS has no space left (even thougjh your C: drive inside VMWare is ok)
                                      This can happen when you tell VMWare to dynamically allocate space for the C: drive (i.e. not a fixed size C:)

                                      I Offline
                                      I Offline
                                      injertao
                                      wrote on 16 Jun 2022, 07:09 last edited by
                                      #18

                                      @hskoglund
                                      I confirm that the disk capacity of the host is sufficient

                                      thanks

                                      1 Reply Last reply
                                      0
                                      • cristian-adamC cristian-adam
                                        15 Jun 2022, 13:28

                                        Note that Qt6 applications, even compiled statically, won't run on Windows 7.

                                        If you really want to achieve this, you need to patch Qt6, see details at https://forum.qt.io/topic/133002/qt-creator-6-0-1-and-qt-6-2-2-running-on-windows-7

                                        If you run out of disk space, you can set the NTFS compression flag of your build directory.

                                        I Offline
                                        I Offline
                                        injertao
                                        wrote on 16 Jun 2022, 07:19 last edited by
                                        #19

                                        @cristian-adam
                                        Thank you, I will make further Chan

                                        1 Reply Last reply
                                        0

                                        1/19

                                        14 Jun 2022, 04:55

                                        • Login

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