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. Cannot build Qt SIP project on Windows: gives linkage errors (metacast,metacall,etc)
Forum Updated to NodeBB v4.3 + New Features

Cannot build Qt SIP project on Windows: gives linkage errors (metacast,metacall,etc)

Scheduled Pinned Locked Moved Unsolved General and Desktop
9 Posts 3 Posters 2.7k 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.
  • K Offline
    K Offline
    kitekat
    wrote on 25 Jun 2017, 12:02 last edited by
    #1

    I have a QWidget, written in C++. I want to create a SIP Python wrapper for it to embed it into another PyQt application.
    It is possible, if PyQt is linked against the same version of Qt as embeddable widget is linked.

    There is even an example on such embedding: the example (https://github.com/eyllanesc/Qt5toPyQt5)
    and some talks about it (https://stackoverflow.com/questions/44258808/is-it-possible-to-embed-c-widget-to-pyqt-application).

    And I have even built it under Linux without any problems, just by the manual.
    And it even worked!

    But for Windows it was not so easy.
    I installed Qt 5.8.0. Downloaded SIP sources, built SIP, installed it with make install. Okay, SIP installed.
    Then I downlaoded PyQt5 sources, built it, copied Qt DLLs into site-packages/PyQt5 -- and PyQt also started working. Okay so far...
    Here is the tutorial I used to build SIP and PyQt5: https://stackoverflow.com/questions/32054021/how-to-install-sip-pyqt-on-windows-7

    But when I tried to build the example from https://github.com/eyllanes/Qt5toPyQt5 , it failed.

    What I did?

    I did python3 configure.py -- okay, it passed, Makefiles created.

    D:\Projects\Qt5toPyQt5>C:/Python35/python configure.py
    QMake version 3.1
    Using Qt version 5.8.0 in D:/Libs/Qt5.8.0/5.8/msvc2015_64/lib
    C:\Python35\sip -t WS_WIN -t Qt_5_8_0 *-I D:\Projects\Qt5toPyQt5\sip -I C:\Python35\sip\PyQt5 -I C:\Python35\include -I D:\Projects\Qt5toPyQt5\src -c D:\Projects\Qt5toPyQt5\modules -b D:\Projects\Qt5toPyQt5\modules\PyAnalogClock.sbf -w -o D:\Projects\Qt5toPyQt5\sip\PyAnalogClock.sip
    
    qmake -spec win32-msvc2010
    Info: creating stash file D:\Projects\Qt5toPyQt5\src\.qmake.stash
    

    But when I tried to build the Makefile with nmake (Visual Studio 2015 Pro), it crashed:

    D:\Projects\Qt5toPyQt5>nmake
    
    Microsoft (R) Program Maintenance Utility Version 14.00.23506.0
    Copyright (C) Microsoft Corporation. *All rights reserved.
    
     * * * *cd src
     * * * *"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\nmake.exe"
    
    Microsoft (R) Program Maintenance Utility Version 14.00.23506.0
    Copyright (C) Microsoft Corporation. *All rights reserved.
    
     * * * *"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\nmake.exe" -f Makefile.Release
    
    Microsoft (R) Program Maintenance Utility Version 14.00.23506.0
    Copyright (C) Microsoft Corporation. *All rights reserved.
    
     * * * *cl -BxD:\Libs\Qt5.8.0\5.8\msvc2015_64\bin\qmake.exe -nologo -Zc:wchar_t -O2 -MD -GR -W3 -w34100 -w34189 -w44996 -E -Za ..\..\..\Libs\Qt5.8.0\5.8\msvc2015_64\mkspecs\features\data\dummy.cpp 2>NUL >release\moc_predefs.h
     * * * *D:\Libs\Qt5.8.0\5.8\msvc2015_64\bin\moc.exe -DUNICODE -DWIN32 -DWIN64 -DANALOGCLOCK_LIBRARY -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG --compiler-flavor=msvc --include release/moc_predefs.h -ID:/Libs/Qt5.8.0/5.8/msvc2015_64/mkspecs/win32-msvc2010 -ID:/Projects/Qt5toPyQt5/src -ID:/Libs/Qt5.8.0/5.8/msvc2015_64/include -ID:/Libs/Qt5.8.0/5.8/msvc2015_64/include/QtWidgets -ID:/Libs/Qt5.8.0/5.8/msvc2015_64/include/QtGui -ID:/Libs/Qt5.8.0/5.8/msvc2015_64/include/QtANGLE -ID:/Libs/Qt5.8.0/5.8/msvc2015_64/include/QtCore -I"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE" -I"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\ATLMFC\INCLUDE" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\ucrt" -I"C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\shared" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\um" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\winrt" -I"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE" -I"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\ATLMFC\INCLUDE" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\ucrt" -I"C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\shared" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\um" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\winrt" analogclock.h -o release\moc_analogclock.cpp
     * * * *cl -c -nologo -Zc:wchar_t -O2 -MD -GR -W3 -w34100 -w34189 -w44996 -EHsc -DUNICODE -DWIN32 -DWIN64 -DANALOGCLOCK_LIBRARY -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -I. -I..\..\..\Libs\Qt5.8.0\5.8\msvc2015_64\include -I..\..\..\Libs\Qt5.8.0\5.8\msvc2015_64\include\QtWidgets -I..\..\..\Libs\Qt5.8.0\5.8\msvc2015_64\include\QtGui -I..\..\..\Libs\Qt5.8.0\5.8\msvc2015_64\include\QtANGLE -I..\..\..\Libs\Qt5.8.0\5.8\msvc2015_64\include\QtCore -Irelease -I..\..\..\Libs\Qt5.8.0\5.8\msvc2015_64\mkspecs\win32-msvc2010 -Forelease\ @C:\Users\felix\AppData\Local\Temp\nm6846.tmp
    analogclock.cpp
     * * * *cl -c -nologo -Zc:wchar_t -O2 -MD -GR -W3 -w34100 -w34189 -w44996 -EHsc -DUNICODE -DWIN32 -DWIN64 -DANALOGCLOCK_LIBRARY -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -I. -I..\..\..\Libs\Qt5.8.0\5.8\msvc2015_64\include -I..\..\..\Libs\Qt5.8.0\5.8\msvc2015_64\include\QtWidgets -I..\..\..\Libs\Qt5.8.0\5.8\msvc2015_64\include\QtGui -I..\..\..\Libs\Qt5.8.0\5.8\msvc2015_64\include\QtANGLE -I..\..\..\Libs\Qt5.8.0\5.8\msvc2015_64\include\QtCore -Irelease -I..\..\..\Libs\Qt5.8.0\5.8\msvc2015_64\mkspecs\win32-msvc2010 -Forelease\ @C:\Users\felix\AppData\Local\Temp\nm6C2D.tmp
    moc_analogclock.cpp
     * * * *lib /NOLOGO */OUT:release\analogclock.lib @C:\Users\felix\AppData\Local\Temp\nm6FE6.tmp
     * * * *cd D:\Projects\Qt5toPyQt5\modules
     * * * *"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\nmake.exe"
    
    Microsoft (R) Program Maintenance Utility Version 14.00.23506.0
    Copyright (C) Microsoft Corporation. *All rights reserved.
    
     * * * *cl -c -nologo -Zm200 -Zc:wchar_t- -FS -Zc:strictStrings -D_HAS_EXCEPTIONS=0 -O2 -MD -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -DNDEBUG -DAnalogClock_LIBRARY -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DUNICODE -DWIN32 -I. -ID:\Projects\Qt5toPyQt5\src -ID:\Libs\Qt5.8.0\5.8\msvc2015_64\include -ID:\Libs\Qt5.8.0\5.8\msvc2015_64\include\QtCore -ID:\Libs\Qt5.8.0\5.8\msvc2015_64\include\QtGui -ID:\Libs\Qt5.8.0\5.8\msvc2015_64\include\QtWidgets -IC:\Python35\include -Fo @C:\Users\felix\AppData\Local\Temp\nm7032.tmp
    sipPyAnalogClockcmodule.cpp
    sipPyAnalogClockAnalogClock.cpp
    Generating Code...
     * * * *link /NOLOGO /DYNAMICBASE /NXCOMPAT /DLL /MANIFEST /MANIFESTFILE:PyAnalogClock.pyd.manifest /SUBSYSTEM:WINDOWS /INCREMENTAL:NO /OUT:PyAnalogClock.pyd @C:\Users\felix\AppData\Local\Temp\nm7957.tmp
     * Creating library PyAnalogClock.lib and object PyAnalogClock.exp
    sipPyAnalogClockAnalogClock.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual struct QMetaObject const * __cdecl AnalogClock::metaObject(void)const " (__imp_?metaObject@AnalogClock@@UEBAPEBUQMetaObject@@XZ) referenced in function "public: virtual struct QMetaObject const * __cdecl sipAnalogClock::metaObject(void)const " (?metaObject@sipAnalogClock@@UEBAPEBUQMetaObject@@XZ)
    sipPyAnalogClockAnalogClock.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual void * __cdecl AnalogClock::qt_metacast(char const *)" (__imp_?qt_metacast@AnalogClock@@UEAAPEAXPEBD@Z) referenced in function "public: virtual void * __cdecl sipAnalogClock::qt_metacast(char const *)" (?qt_metacast@sipAnalogClock@@UEAAPEAXPEBD@Z)
    sipPyAnalogClockAnalogClock.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual int __cdecl AnalogClock::qt_metacall(enum QMetaObject::Call,int,void * *)" (__imp_?qt_metacall@AnalogClock@@UEAAHW4Call@QMetaObject@@HPEAPEAX@Z) referenced in function "public: virtual int __cdecl sipAnalogClock::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@sipAnalogClock@@UEAAHW4Call@QMetaObject@@HPEAPEAX@Z)
    sipPyAnalogClockAnalogClock.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __cdecl AnalogClock::AnalogClock(class QWidget *)" (__imp_??0AnalogClock@@QEAA@PEAVQWidget@@@Z) referenced in function init_type_AnalogClock
    sipPyAnalogClockAnalogClock.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) protected: virtual void __cdecl AnalogClock::paintEven
    ```t(class QPaintEvent *)" (__imp_?paintEvent@AnalogClock@@MEAAXPEAVQPaintEvent@@@Z) referenced in function meth_AnalogClock_paintEvent
    sipPyAnalogClockAnalogClock.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: static struct QMetaObject const AnalogClock::staticMetaObject" (__imp_?staticMetaObject@AnalogClock@@2UQMetaObject@@B) referenced in function "void __cdecl `dynamic initializer for 'plugin_AnalogClock''(void)" (??__Eplugin_AnalogClock@@YAXXZ)
    PyAnalogClock.pyd : fatal error LNK1120: 6 unresolved externals
    NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\link.EXE"' : return code '0x460'
    Stop.
    NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\nmake.exe"' : return code '0x2'
    Stop.
    
    Can I somehow cope with it?
    K 1 Reply Last reply 25 Jun 2017, 14:04
    0
    • K kitekat
      25 Jun 2017, 12:02

      I have a QWidget, written in C++. I want to create a SIP Python wrapper for it to embed it into another PyQt application.
      It is possible, if PyQt is linked against the same version of Qt as embeddable widget is linked.

      There is even an example on such embedding: the example (https://github.com/eyllanesc/Qt5toPyQt5)
      and some talks about it (https://stackoverflow.com/questions/44258808/is-it-possible-to-embed-c-widget-to-pyqt-application).

      And I have even built it under Linux without any problems, just by the manual.
      And it even worked!

      But for Windows it was not so easy.
      I installed Qt 5.8.0. Downloaded SIP sources, built SIP, installed it with make install. Okay, SIP installed.
      Then I downlaoded PyQt5 sources, built it, copied Qt DLLs into site-packages/PyQt5 -- and PyQt also started working. Okay so far...
      Here is the tutorial I used to build SIP and PyQt5: https://stackoverflow.com/questions/32054021/how-to-install-sip-pyqt-on-windows-7

      But when I tried to build the example from https://github.com/eyllanes/Qt5toPyQt5 , it failed.

      What I did?

      I did python3 configure.py -- okay, it passed, Makefiles created.

      D:\Projects\Qt5toPyQt5>C:/Python35/python configure.py
      QMake version 3.1
      Using Qt version 5.8.0 in D:/Libs/Qt5.8.0/5.8/msvc2015_64/lib
      C:\Python35\sip -t WS_WIN -t Qt_5_8_0 *-I D:\Projects\Qt5toPyQt5\sip -I C:\Python35\sip\PyQt5 -I C:\Python35\include -I D:\Projects\Qt5toPyQt5\src -c D:\Projects\Qt5toPyQt5\modules -b D:\Projects\Qt5toPyQt5\modules\PyAnalogClock.sbf -w -o D:\Projects\Qt5toPyQt5\sip\PyAnalogClock.sip
      
      qmake -spec win32-msvc2010
      Info: creating stash file D:\Projects\Qt5toPyQt5\src\.qmake.stash
      

      But when I tried to build the Makefile with nmake (Visual Studio 2015 Pro), it crashed:

      D:\Projects\Qt5toPyQt5>nmake
      
      Microsoft (R) Program Maintenance Utility Version 14.00.23506.0
      Copyright (C) Microsoft Corporation. *All rights reserved.
      
       * * * *cd src
       * * * *"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\nmake.exe"
      
      Microsoft (R) Program Maintenance Utility Version 14.00.23506.0
      Copyright (C) Microsoft Corporation. *All rights reserved.
      
       * * * *"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\nmake.exe" -f Makefile.Release
      
      Microsoft (R) Program Maintenance Utility Version 14.00.23506.0
      Copyright (C) Microsoft Corporation. *All rights reserved.
      
       * * * *cl -BxD:\Libs\Qt5.8.0\5.8\msvc2015_64\bin\qmake.exe -nologo -Zc:wchar_t -O2 -MD -GR -W3 -w34100 -w34189 -w44996 -E -Za ..\..\..\Libs\Qt5.8.0\5.8\msvc2015_64\mkspecs\features\data\dummy.cpp 2>NUL >release\moc_predefs.h
       * * * *D:\Libs\Qt5.8.0\5.8\msvc2015_64\bin\moc.exe -DUNICODE -DWIN32 -DWIN64 -DANALOGCLOCK_LIBRARY -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG --compiler-flavor=msvc --include release/moc_predefs.h -ID:/Libs/Qt5.8.0/5.8/msvc2015_64/mkspecs/win32-msvc2010 -ID:/Projects/Qt5toPyQt5/src -ID:/Libs/Qt5.8.0/5.8/msvc2015_64/include -ID:/Libs/Qt5.8.0/5.8/msvc2015_64/include/QtWidgets -ID:/Libs/Qt5.8.0/5.8/msvc2015_64/include/QtGui -ID:/Libs/Qt5.8.0/5.8/msvc2015_64/include/QtANGLE -ID:/Libs/Qt5.8.0/5.8/msvc2015_64/include/QtCore -I"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE" -I"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\ATLMFC\INCLUDE" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\ucrt" -I"C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\shared" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\um" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\winrt" -I"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE" -I"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\ATLMFC\INCLUDE" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\ucrt" -I"C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\shared" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\um" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\winrt" analogclock.h -o release\moc_analogclock.cpp
       * * * *cl -c -nologo -Zc:wchar_t -O2 -MD -GR -W3 -w34100 -w34189 -w44996 -EHsc -DUNICODE -DWIN32 -DWIN64 -DANALOGCLOCK_LIBRARY -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -I. -I..\..\..\Libs\Qt5.8.0\5.8\msvc2015_64\include -I..\..\..\Libs\Qt5.8.0\5.8\msvc2015_64\include\QtWidgets -I..\..\..\Libs\Qt5.8.0\5.8\msvc2015_64\include\QtGui -I..\..\..\Libs\Qt5.8.0\5.8\msvc2015_64\include\QtANGLE -I..\..\..\Libs\Qt5.8.0\5.8\msvc2015_64\include\QtCore -Irelease -I..\..\..\Libs\Qt5.8.0\5.8\msvc2015_64\mkspecs\win32-msvc2010 -Forelease\ @C:\Users\felix\AppData\Local\Temp\nm6846.tmp
      analogclock.cpp
       * * * *cl -c -nologo -Zc:wchar_t -O2 -MD -GR -W3 -w34100 -w34189 -w44996 -EHsc -DUNICODE -DWIN32 -DWIN64 -DANALOGCLOCK_LIBRARY -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -I. -I..\..\..\Libs\Qt5.8.0\5.8\msvc2015_64\include -I..\..\..\Libs\Qt5.8.0\5.8\msvc2015_64\include\QtWidgets -I..\..\..\Libs\Qt5.8.0\5.8\msvc2015_64\include\QtGui -I..\..\..\Libs\Qt5.8.0\5.8\msvc2015_64\include\QtANGLE -I..\..\..\Libs\Qt5.8.0\5.8\msvc2015_64\include\QtCore -Irelease -I..\..\..\Libs\Qt5.8.0\5.8\msvc2015_64\mkspecs\win32-msvc2010 -Forelease\ @C:\Users\felix\AppData\Local\Temp\nm6C2D.tmp
      moc_analogclock.cpp
       * * * *lib /NOLOGO */OUT:release\analogclock.lib @C:\Users\felix\AppData\Local\Temp\nm6FE6.tmp
       * * * *cd D:\Projects\Qt5toPyQt5\modules
       * * * *"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\nmake.exe"
      
      Microsoft (R) Program Maintenance Utility Version 14.00.23506.0
      Copyright (C) Microsoft Corporation. *All rights reserved.
      
       * * * *cl -c -nologo -Zm200 -Zc:wchar_t- -FS -Zc:strictStrings -D_HAS_EXCEPTIONS=0 -O2 -MD -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -DNDEBUG -DAnalogClock_LIBRARY -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DUNICODE -DWIN32 -I. -ID:\Projects\Qt5toPyQt5\src -ID:\Libs\Qt5.8.0\5.8\msvc2015_64\include -ID:\Libs\Qt5.8.0\5.8\msvc2015_64\include\QtCore -ID:\Libs\Qt5.8.0\5.8\msvc2015_64\include\QtGui -ID:\Libs\Qt5.8.0\5.8\msvc2015_64\include\QtWidgets -IC:\Python35\include -Fo @C:\Users\felix\AppData\Local\Temp\nm7032.tmp
      sipPyAnalogClockcmodule.cpp
      sipPyAnalogClockAnalogClock.cpp
      Generating Code...
       * * * *link /NOLOGO /DYNAMICBASE /NXCOMPAT /DLL /MANIFEST /MANIFESTFILE:PyAnalogClock.pyd.manifest /SUBSYSTEM:WINDOWS /INCREMENTAL:NO /OUT:PyAnalogClock.pyd @C:\Users\felix\AppData\Local\Temp\nm7957.tmp
       * Creating library PyAnalogClock.lib and object PyAnalogClock.exp
      sipPyAnalogClockAnalogClock.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual struct QMetaObject const * __cdecl AnalogClock::metaObject(void)const " (__imp_?metaObject@AnalogClock@@UEBAPEBUQMetaObject@@XZ) referenced in function "public: virtual struct QMetaObject const * __cdecl sipAnalogClock::metaObject(void)const " (?metaObject@sipAnalogClock@@UEBAPEBUQMetaObject@@XZ)
      sipPyAnalogClockAnalogClock.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual void * __cdecl AnalogClock::qt_metacast(char const *)" (__imp_?qt_metacast@AnalogClock@@UEAAPEAXPEBD@Z) referenced in function "public: virtual void * __cdecl sipAnalogClock::qt_metacast(char const *)" (?qt_metacast@sipAnalogClock@@UEAAPEAXPEBD@Z)
      sipPyAnalogClockAnalogClock.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual int __cdecl AnalogClock::qt_metacall(enum QMetaObject::Call,int,void * *)" (__imp_?qt_metacall@AnalogClock@@UEAAHW4Call@QMetaObject@@HPEAPEAX@Z) referenced in function "public: virtual int __cdecl sipAnalogClock::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@sipAnalogClock@@UEAAHW4Call@QMetaObject@@HPEAPEAX@Z)
      sipPyAnalogClockAnalogClock.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __cdecl AnalogClock::AnalogClock(class QWidget *)" (__imp_??0AnalogClock@@QEAA@PEAVQWidget@@@Z) referenced in function init_type_AnalogClock
      sipPyAnalogClockAnalogClock.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) protected: virtual void __cdecl AnalogClock::paintEven
      ```t(class QPaintEvent *)" (__imp_?paintEvent@AnalogClock@@MEAAXPEAVQPaintEvent@@@Z) referenced in function meth_AnalogClock_paintEvent
      sipPyAnalogClockAnalogClock.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: static struct QMetaObject const AnalogClock::staticMetaObject" (__imp_?staticMetaObject@AnalogClock@@2UQMetaObject@@B) referenced in function "void __cdecl `dynamic initializer for 'plugin_AnalogClock''(void)" (??__Eplugin_AnalogClock@@YAXXZ)
      PyAnalogClock.pyd : fatal error LNK1120: 6 unresolved externals
      NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\link.EXE"' : return code '0x460'
      Stop.
      NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\nmake.exe"' : return code '0x2'
      Stop.
      
      Can I somehow cope with it?
      K Offline
      K Offline
      koahnig
      wrote on 25 Jun 2017, 14:04 last edited by
      #2

      @kitekat said in Cannot build Qt SIP project on Windows: gives linkage errors (metacast,metacall,etc):

      D:\Projects\Qt5toPyQt5>C:/Python35/python configure.py
      QMake version 3.1
      Using Qt version 5.8.0 in D:/Libs/Qt5.8.0/5.8/msvc2015_64/lib
      C:\Python35\sip -t WS_WIN -t Qt_5_8_0 *-I D:\Projects\Qt5toPyQt5\sip -I C:\Python35\sip\PyQt5 -I C:\Python35\include -I D:\Projects\Qt5toPyQt5\src -c D:\Projects\Qt5toPyQt5\modules -b D:\Projects\Qt5toPyQt5\modules\PyAnalogClock.sbf -w -o D:\Projects\Qt5toPyQt5\sip\PyAnalogClock.sip
      
      qmake -spec win32-msvc2010
      Info: creating stash file D:\Projects\Qt5toPyQt5\src\.qmake.stash
      

      There is a mixture of msvc 2010 and msvc 2015. In general msvc versions are not compatible with each other with the exception of very recent versions. My guess is your switch use of msvc 2010 is creating the problem. Try to use all with the same version of msvc and do not mix. At least you have removed one ambiguity in the process.

      Vote the answer(s) that helped you to solve your issue(s)

      1 Reply Last reply
      0
      • K Offline
        K Offline
        kitekat
        wrote on 25 Jun 2017, 14:16 last edited by
        #3

        Replaced "2010" with "2015" in configure.py

        Nothing changed, the same errors apper.

        K 1 Reply Last reply 25 Jun 2017, 14:25
        0
        • K kitekat
          25 Jun 2017, 14:16

          Replaced "2010" with "2015" in configure.py

          Nothing changed, the same errors apper.

          K Offline
          K Offline
          koahnig
          wrote on 25 Jun 2017, 14:25 last edited by
          #4

          @kitekat

          Are you mixing 32 and 64 bit versions?

          My msvc experience is really a long time back. At the moment I doubt I can help you here.

          Vote the answer(s) that helped you to solve your issue(s)

          1 Reply Last reply
          0
          • SGaistS Offline
            SGaistS Offline
            SGaist
            Lifetime Qt Champion
            wrote on 25 Jun 2017, 21:59 last edited by
            #5

            Hi,

            Are you properly exporting your class ?

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

            K 1 Reply Last reply 25 Jun 2017, 22:07
            0
            • SGaistS SGaist
              25 Jun 2017, 21:59

              Hi,

              Are you properly exporting your class ?

              K Offline
              K Offline
              kitekat
              wrote on 25 Jun 2017, 22:07 last edited by
              #6

              @SGaist

              Well, i don't know...
              I've just started with SIP...

              1 Reply Last reply
              0
              • SGaistS Offline
                SGaistS Offline
                SGaist
                Lifetime Qt Champion
                wrote on 25 Jun 2017, 22:08 last edited by
                #7

                I'm asking about your C++ class.

                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
                • K Offline
                  K Offline
                  kitekat
                  wrote on 28 Jun 2017, 08:07 last edited by
                  #8

                  Well, yes. There was not set q_decl_export, don't know why.
                  When I set it manually, it started building and working.

                  1 Reply Last reply
                  0
                  • SGaistS Offline
                    SGaistS Offline
                    SGaist
                    Lifetime Qt Champion
                    wrote on 28 Jun 2017, 10:23 last edited by
                    #9

                    Because it's not something mandatory and it's Windows specific. In any case, it's usually a good thing to have when writing libraries.

                    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

                    1/9

                    25 Jun 2017, 12:02

                    • Login

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