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. error LNK2001: unresolved external symbol "public: static struct QMetaObject .. from lib template
Forum Updated to NodeBB v4.3 + New Features

error LNK2001: unresolved external symbol "public: static struct QMetaObject .. from lib template

Scheduled Pinned Locked Moved Solved General and Desktop
28 Posts 5 Posters 11.4k Views 2 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.
  • kshegunovK kshegunov

    @OPit said in error LNK2001: unresolved external symbol "public: static struct QMetaObject .. from lib template:

    1. QtAV is imported in Qt config, so I think all is good for that (just add QT += avwidgets)

    Did you build that module yourself?

    1. I have thinking about this problem but I don't know how to see if it's OK are not.

    Firstly, use dependency walker to find out what the module links against, from there you could also see what kinds of symbols are exported. Then you can do the same for your library and see if everything matches.

    1. I've checked, and it's ok about that.

    How did you check? Where did you get the qtav module from, or did you compiled it yourself?

    O Offline
    O Offline
    OPit
    wrote on last edited by
    #8

    @kshegunov Yes, I've built myself the QtAv lib (because the last precompile binaries not use the last version of QtAv).
    I've checked which compiler was used during compilation, and it was the same for each module.

    NB : if I link the moc_inputstreampreview.obj file directly in my app, it works ?!?

    LIBS += path/of/file/moc_inputstreampreview.obj
    
    1 Reply Last reply
    0
    • O Offline
      O Offline
      OPit
      wrote on last edited by
      #9

      If I open QtAvWidget1.dll, I found the function :

      ?metaObject@VideoPreviewWidget@QtAV@@UEBAPEBUQMetaObject@@XZ
      

      I can't read .lib file from dependency walker, how can I check these files ?

      kshegunovK 1 Reply Last reply
      0
      • SGaistS Offline
        SGaistS Offline
        SGaist
        Lifetime Qt Champion
        wrote on last edited by
        #10

        In your build output, can you see whether the QtAV libraries are currently getting linked to your application ?

        Interested in AI ? www.idiap.ch
        Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

        1 Reply Last reply
        0
        • O Offline
          O Offline
          OPit
          wrote on last edited by OPit
          #11

          Hi,
          I'm using QtCreator with visual studio compiler and I don't have a lot of informations during linking :

          link /NOLOGO /DYNAMICBASE /NXCOMPAT /INCREMENTAL:NO /SUBSYSTEM:WINDOWS "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" /VERSION:4.0 /MANIFEST:embed /OUT:..\..\bin\ms\L2R_Video.exe @c:\Temp\L2R_Video.exe.4652.31672.jom
          myStream.lib(moc_inputstreampreview.obj) : error LNK2001: symbole externe non résolu "public: static struct QMetaObject const QtAV::VideoPreviewWidget::staticMetaObject" (?staticMetaObject@VideoPreviewWidget@QtAV@@2UQMetaObject@@B)
          ..\..\bin\ms\L2R_Video.exe : fatal error LNK1120: 1 externes non résolus
          

          But in my Makefile.Release file, the QtAv libs are well written :

          LIBS          = /LIBPATH:D:\Dev\Programme\3rdparty\ms\lib 
          D:\Dev\Programme\3rdparty\ms\lib\myStream.lib 
          D:\Dev\Programme\3rdparty\ms\lib\swscale.lib 
          D:\Dev\Programme\3rdparty\ms\lib\avformat.lib 
          D:\Dev\Programme\3rdparty\ms\lib\avcodec.lib 
          D:\Dev\Programme\3rdparty\ms\lib\avutil.lib 
          D:\Dev\Programme\3rdparty\ms\lib\swresample.lib 
          secur32.lib 
          D:\Dev\Programme\3rdparty\ms\lib\myGraphics.lib 
          ws2_32.lib shell32.lib advapi32.lib gdi32.lib User32.lib 
          /LIBPATH:D:\Dev\Environnement\ms\Qt\5.12.0\msvc2017_64\lib D:\Dev\Environnement\ms\Qt\5.12.0\msvc2017_64\lib\Qt5WebEngineWidgets.lib 
          D:\Dev\Environnement\ms\Qt\5.12.0\msvc2017_64\lib\Qt5PrintSupport.lib 
          D:\Dev\Environnement\ms\Qt\5.12.0\msvc2017_64\lib\Qt5AVWidgets.lib 
          D:\Dev\Environnement\ms\Qt\5.12.0\msvc2017_64\lib\Qt5OpenGL.lib 
          D:\Dev\Environnement\ms\Qt\5.12.0\msvc2017_64\lib\Qt5Widgets.lib 
          D:\Dev\Environnement\ms\Qt\5.12.0\msvc2017_64\lib\Qt5Multimedia.lib 
          D:\Dev\Environnement\ms\Qt\5.12.0\msvc2017_64\lib\Qt5WebEngineCore.lib 
          D:\Dev\Environnement\ms\Qt\5.12.0\msvc2017_64\lib\Qt5Quick.lib 
          D:\Dev\Environnement\ms\Qt\5.12.0\msvc2017_64\lib\Qt5AV.lib 
          ...
          
          1 Reply Last reply
          0
          • SGaistS Offline
            SGaistS Offline
            SGaist
            Lifetime Qt Champion
            wrote on last edited by
            #12

            Might be a silly question but are linking to libraries of the same type ? Meaning matching debug/release builds.

            Interested in AI ? www.idiap.ch
            Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

            1 Reply Last reply
            1
            • O Offline
              O Offline
              OPit
              wrote on last edited by
              #13

              @SGaist said in error LNK2001: unresolved external symbol "public: static struct QMetaObject .. from lib template:

              silly

              Sadly it's not the problem ...

              aha_1980A 1 Reply Last reply
              0
              • O OPit

                @SGaist said in error LNK2001: unresolved external symbol "public: static struct QMetaObject .. from lib template:

                silly

                Sadly it's not the problem ...

                aha_1980A Offline
                aha_1980A Offline
                aha_1980
                Lifetime Qt Champion
                wrote on last edited by
                #14

                @OPit And both have the same architecture, i.e. 32 vs. 64 bit?

                Qt has to stay free or it will die.

                O 1 Reply Last reply
                0
                • O OPit

                  If I open QtAvWidget1.dll, I found the function :

                  ?metaObject@VideoPreviewWidget@QtAV@@UEBAPEBUQMetaObject@@XZ
                  

                  I can't read .lib file from dependency walker, how can I check these files ?

                  kshegunovK Offline
                  kshegunovK Offline
                  kshegunov
                  Moderators
                  wrote on last edited by kshegunov
                  #15

                  This:

                  @OPit said in error LNK2001: unresolved external symbol "public: static struct QMetaObject .. from lib template:

                  ?metaObject@VideoPreviewWidget@QtAV@@UEBAPEBUQMetaObject@@XZ
                  

                  Is very different from this:

                  ?staticMetaObject@VideoPreviewWidget@QtAV@@2UQMetaObject@@B
                  

                  The former is a method, the latter is a (global) variable. Please try again. Could you also provide the content of the moc file in question (the one that fixes the issue if linked with)?

                  Read and abide by the Qt Code of Conduct

                  1 Reply Last reply
                  0
                  • aha_1980A aha_1980

                    @OPit And both have the same architecture, i.e. 32 vs. 64 bit?

                    O Offline
                    O Offline
                    OPit
                    wrote on last edited by OPit
                    #16

                    @aha_1980 yes, the same architecture

                    @kshegunov this is a link to download the file (I can't upload from the forum) :
                    https://we.tl/t-bhEPIToZV2

                    Thanks.

                    kshegunovK 1 Reply Last reply
                    0
                    • hskoglundH Offline
                      hskoglundH Offline
                      hskoglund
                      wrote on last edited by
                      #17

                      Hi, perhaps it's a namespace problem, you could try changing to a using statement in your InputStreamPreview.h:

                      #include <QtAVWidgets/VideoPreviewWidget.h>
                      
                      using namespace QtAV;
                      
                      class InputStreamPreview : public VideoPreviewWidget
                      {
                      Q_OBJECT
                      ...
                      
                      1 Reply Last reply
                      1
                      • O OPit

                        @aha_1980 yes, the same architecture

                        @kshegunov this is a link to download the file (I can't upload from the forum) :
                        https://we.tl/t-bhEPIToZV2

                        Thanks.

                        kshegunovK Offline
                        kshegunovK Offline
                        kshegunov
                        Moderators
                        wrote on last edited by kshegunov
                        #18

                        @OPit said in error LNK2001: unresolved external symbol "public: static struct QMetaObject .. from lib template:

                        this is a link to download the file (I can't upload from the forum)

                        I'm sorry I wasn't clear. I meant the generated moc_XXX.cpp file. I have no tools to inspect the object file even if I wanted to because I work exclusively on Linux.

                        @hskoglund said in error LNK2001: unresolved external symbol "public: static struct QMetaObject .. from lib template:

                        Hi, perhaps it's a namespace problem, you could try changing to a using statement in your InputStreamPreview.h

                        A decent idea, but I don't think that's it. moc, while not too smart, does recognize namespaces and generates code accordingly. I do use them and everything links fine.

                        Read and abide by the Qt Code of Conduct

                        1 Reply Last reply
                        0
                        • O Offline
                          O Offline
                          OPit
                          wrote on last edited by
                          #19

                          @kshegunov oh sorry, this is the cpp file.

                          https://we.tl/t-NXhNCGkSmc

                          1 Reply Last reply
                          0
                          • hskoglundH Offline
                            hskoglundH Offline
                            hskoglund
                            wrote on last edited by
                            #20

                            Hi, do you have a moc_VideoPreviewWidget.cpp that's compiled using Qt 5.12? (The one in the link is built with Qt 5.9.1)

                            O 1 Reply Last reply
                            0
                            • hskoglundH hskoglund

                              Hi, do you have a moc_VideoPreviewWidget.cpp that's compiled using Qt 5.12? (The one in the link is built with Qt 5.9.1)

                              O Offline
                              O Offline
                              OPit
                              wrote on last edited by
                              #21

                              @hskoglund yes of course : https://we.tl/t-Uhhsre7Vzm

                              the problem is the same with version 5.9.1 or 5.12 (and also VS2017 or VS2015)

                              1 Reply Last reply
                              0
                              • hskoglundH Offline
                                hskoglundH Offline
                                hskoglund
                                wrote on last edited by
                                #22

                                Hi, if you look in the .pro files above for your application and myStream.lib, both .pro files have a inputstreampreview.cpp and a inputstreampreview.h included. They are not located in the same directory (one pair is in ../../src/ and the other pair is in ../../src/view/) but if they have the same contents then maybe the linker gets confused when you build your app (together with your myStream.lib).

                                If they do not have the same contents (i.e. just a stroke of bad luck with the naming of your files) then rename one of the pairs. Otherwise, you could try building your app again but with only of the pairs, for example commenting out ../../src/view/inputstreampreview.cpp from the SOURCES section in your Application.pro file.

                                O 1 Reply Last reply
                                3
                                • hskoglundH hskoglund

                                  Hi, if you look in the .pro files above for your application and myStream.lib, both .pro files have a inputstreampreview.cpp and a inputstreampreview.h included. They are not located in the same directory (one pair is in ../../src/ and the other pair is in ../../src/view/) but if they have the same contents then maybe the linker gets confused when you build your app (together with your myStream.lib).

                                  If they do not have the same contents (i.e. just a stroke of bad luck with the naming of your files) then rename one of the pairs. Otherwise, you could try building your app again but with only of the pairs, for example commenting out ../../src/view/inputstreampreview.cpp from the SOURCES section in your Application.pro file.

                                  O Offline
                                  O Offline
                                  OPit
                                  wrote on last edited by
                                  #23

                                  @hskoglund said in error LNK2001: unresolved external symbol "public: static struct QMetaObject .. from lib template:

                                  inputstreampreview.cpp

                                  thanks for your answer, but I don't understand well what you want to say.
                                  inputstreampreview.cpp/.h are only included in myStream.lib (in src folder).
                                  For my main app, I just include the .h with INCLUDEPATH keyword and link myStream lib with LIBS+= -lmyStream
                                  I don't know why and where you can see ../../src/view/ path ??

                                  kshegunovK 1 Reply Last reply
                                  0
                                  • hskoglundH Offline
                                    hskoglundH Offline
                                    hskoglund
                                    wrote on last edited by
                                    #24

                                    0_1547215144787_Screenshot from 2019-01-11 14-53-12.png

                                    O 1 Reply Last reply
                                    2
                                    • hskoglundH hskoglund

                                      0_1547215144787_Screenshot from 2019-01-11 14-53-12.png

                                      O Offline
                                      O Offline
                                      OPit
                                      wrote on last edited by
                                      #25

                                      @hskoglund oups it's a mistake, a drag and drop in my exemple app.pro. But even if I remove this entry, I have the same problem.

                                      1 Reply Last reply
                                      0
                                      • hskoglundH Offline
                                        hskoglundH Offline
                                        hskoglund
                                        wrote on last edited by hskoglund
                                        #26

                                        Even if you run qmake and rebuild AppTest.exe i.e. Application.pro?

                                        1 Reply Last reply
                                        0
                                        • O OPit

                                          @hskoglund said in error LNK2001: unresolved external symbol "public: static struct QMetaObject .. from lib template:

                                          inputstreampreview.cpp

                                          thanks for your answer, but I don't understand well what you want to say.
                                          inputstreampreview.cpp/.h are only included in myStream.lib (in src folder).
                                          For my main app, I just include the .h with INCLUDEPATH keyword and link myStream lib with LIBS+= -lmyStream
                                          I don't know why and where you can see ../../src/view/ path ??

                                          kshegunovK Offline
                                          kshegunovK Offline
                                          kshegunov
                                          Moderators
                                          wrote on last edited by kshegunov
                                          #27

                                          I'm pretty sure at this point that for whatever reason your static library didn't include the symbol in question. One way or another you need to find why that happened. It may be a bug with the library, or some misconfiguration.

                                          Read and abide by the Qt Code of Conduct

                                          1 Reply Last reply
                                          0

                                          • Login

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