Results 1 to 6 of 6

Thread: Custom Plugin Trouble

  1. #1
    Join Date
    Mar 2006
    Posts
    140
    Thanks
    8
    Thanked 4 Times in 3 Posts
    Qt products
    Qt4
    Platforms
    Unix/X11 Windows

    Default Custom Plugin Trouble

    Hi,

    I'm trying to create a custom plugin using the QtPlugin framework.
    I have 3 projects, a main Ui app, a "core" dll containing my plugin interface and an implementation of the plugin in another dll.

    I'm getting the following compile errors in Qt Creator:
    Starting: C:/Qt/2009.03/mingw/bin/mingw32-make.exe -w
    mingw32-make: Entering directory `D:/Development/QtTests/TestPlugin1'
    C:/Qt/2009.03/mingw/bin/mingw32-make -f Makefile.Debug
    mingw32-make[1]: Entering directory `D:/Development/QtTests/TestPlugin1'
    g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -mthreads -Wl -shared -Wl,--out-implib,debug\libTestPlugin1.a -o debug\TestPlugin1.dll debug/TestPlugin1.o debug/moc_TestPlugin1.o -L"c:\Qt\2009.03\qt\lib" -L../TestAppCore/debug -lTestAppCore -lQtXmld4 -lQtCored4
    mingw32-make[1]: Leaving directory `D:/Development/QtTests/TestPlugin1'
    mingw32-make: Leaving directory `D:/Development/QtTests/TestPlugin1'
    Creating library file: debug\libTestPlugin1.a
    debug/TestPlugin1.o: In function `ZN8QPointerI7QObjectEaSEPS0_':
    c:/Qt/2009.03/qt/include/QtCore/../../src/corelib/kernel/qpointer.h.text$_ZN12CustomPluginC2Ev[CustomPlugin::CustomPlugin()]+0x7): undefined reference to `_imp___ZTV12CustomPlugin'
    debug/moc_TestPlugin1.o: In function `ZThn8_N11TestPlugin1D1Ev':
    D:/Development/QtTests/TestPlugin1/debug/moc_TestPlugin1.cpp.text$_ZN11TestPlugin1D1Ev[TestPlugin1::~TestPlugin1()]+0x54): undefined reference to `_imp___ZN12CustomPluginD2Ev'
    D:/Development/QtTests/TestPlugin1/debug/moc_TestPlugin1.cpp.text$_ZN11TestPlugin1D0Ev[TestPlugin1::~TestPlugin1()]+0x54): undefined reference to `_imp___ZN12CustomPluginD2Ev'
    collect2: ld returned 1 exit status
    mingw32-make[1]: *** [debug\TestPlugin1.dll] Error 1
    mingw32-make: *** [debug] Error 2
    Exited with code 2.
    Error while building project TestPlugin1
    When executing build step 'Make'
    I think it's to do with vtables and such, but I'm not sure how to fix the problem.
    I've set the following varialbes in TestPlugin1.pro:
    Qt Code:
    1. INCLUDEPATH += ../TestAppCore
    2. LIBS += -L../TestAppCore/debug -lTestAppCore
    To copy to clipboard, switch view to plain text mode 

    Can someone please point out what's probably completely obvious?
    I've attached the 3 projects to this thread.


    Thanks,

    Stephen York
    Attached Files Attached Files
    Last edited by wysota; 3rd November 2009 at 17:09.

  2. #2
    Join Date
    Jan 2006
    Location
    Warsaw, Poland
    Posts
    33,359
    Thanks
    3
    Thanked 5,015 Times in 4,792 Posts
    Qt products
    Qt3 Qt4 Qt5 Qt/Embedded
    Platforms
    Unix/X11 Windows Android Maemo/MeeGo
    Wiki edits
    10

    Default Re: Custom Plugin Trouble

    You forgot to implement the destructor for CustomPlugin.
    Your biological and technological distinctiveness will be added to our own. Resistance is futile.

    Please ask Qt related questions on the forum and not using private messages or visitor messages.


  3. #3
    Join Date
    Mar 2006
    Posts
    140
    Thanks
    8
    Thanked 4 Times in 3 Posts
    Qt products
    Qt4
    Platforms
    Unix/X11 Windows

    Default Re: Custom Plugin Trouble

    Actually, while tinkering I realised that.
    I'm still not sure why that has to be done. Is that something to do with pure virtual interfaces, therefore the compiler tries to implicitly create a destructor which it can't because the class can't be concrete?

    Steve

  4. #4
    Join Date
    Jan 2006
    Location
    Warsaw, Poland
    Posts
    33,359
    Thanks
    3
    Thanked 5,015 Times in 4,792 Posts
    Qt products
    Qt3 Qt4 Qt5 Qt/Embedded
    Platforms
    Unix/X11 Windows Android Maemo/MeeGo
    Wiki edits
    10

    Default Re: Custom Plugin Trouble

    Quote Originally Posted by stevey View Post
    I'm still not sure why that has to be done. Is that something to do with pure virtual interfaces, therefore the compiler tries to implicitly create a destructor which it can't because the class can't be concrete?
    It has to do with the fact that you explicitly declared it but didn't implement it. Being pure virtual or not has little to do with this.
    Your biological and technological distinctiveness will be added to our own. Resistance is futile.

    Please ask Qt related questions on the forum and not using private messages or visitor messages.


  5. #5
    Join Date
    Mar 2006
    Posts
    140
    Thanks
    8
    Thanked 4 Times in 3 Posts
    Qt products
    Qt4
    Platforms
    Unix/X11 Windows

    Default Re: Custom Plugin Trouble

    Ok, I also had to inherit from QObject and specify Q_OBJECT to avoid some further conflicts.

    So ... I compiled it on MacOS X but was having trouble debugging, due to the environment I have setup on the machine, so I moved it to my Windows box, but now I'm getting these errors:
    Running build steps for project TestAppCore...
    Configuration unchanged, skipping QMake step.
    Starting: C:/Program Files/Microsoft Visual Studio .NET 2003/VC7/BIN/nmake.exe
    nmake -f Makefile.Debug
    cl -c -nologo -Zm200 -Zc:wchar_t- -Zi -MDd -GR -EHsc -W3 -w34100 -w34189 -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DTESTAPPCORE_LIBRARY -DQT_DLL -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"c:\Qt\4.5.2\include\QtCore" -I"c:\Qt\4.5.2\include" -I"c:\Qt\4.5.2\include\ActiveQt" -I"debug" -I"c:\Qt\4.5.2\mkspecs\win32-msvc2008" -Fodebug\ @C:\DOCUME~1\Steve\LOCALS~1\Temp\nm1895.tmp
    TestAppCore.cpp
    link /LIBPATH:"c:\Qt\4.5.2\lib" /NOLOGO /DEBUG /DLL /MANIFEST /MANIFESTFILE:"debug\TestAppCore.intermediate.manif est" /OUT:debug\TestAppCore.dll @C:\DOCUME~1\Steve\LOCALS~1\Temp\nm1896.tmp

    Microsoft (R) Program Maintenance Utility Version 7.10.3077
    Copyright (C) Microsoft Corporation. All rights reserved.


    Microsoft (R) Program Maintenance Utility Version 7.10.3077
    Copyright (C) Microsoft Corporation. All rights reserved.

    cl : Command line warning D4002 : ignoring unknown option '-Zc:-'
    LINK : warning LNK4044: unrecognized option '/MANIFEST'; ignored
    LINK : warning LNK4044: unrecognized option '/MANIFESTFILE:debug\TestAppCore.intermediate.manife st'; ignored
    Creating library debug\TestAppCore.lib and object debug\TestAppCore.exp
    mt.exe -nologo -manifest "debug\TestAppCore.intermediate.manifest" -outputresource:debug\TestAppCore.dll;2
    'mt.exe' is not recognized as an internal or external command,
    operable program or batch file.
    NMAKE : fatal error U1077: 'mt.exe' : return code '0x1'
    Stop.
    NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio .NET 2003\VC7\BIN\nmake.exe"' : return code '0x2'
    Stop.
    Exited with code 2.
    Error while building project TestAppCore
    When executing build step 'Make'
    Any idea how to get Qt Creator to find mt.exe? Is it possible to add environment variables to the build step via the .pro file? I'm surprised that mt.exe isn't in the path already after having installed Visual Studio.

    Will go with a system wide env var if I have to.

    Thanks,

    Steve
    Last edited by wysota; 3rd November 2009 at 17:07.

  6. #6
    Join Date
    Jan 2006
    Location
    Warsaw, Poland
    Posts
    33,359
    Thanks
    3
    Thanked 5,015 Times in 4,792 Posts
    Qt products
    Qt3 Qt4 Qt5 Qt/Embedded
    Platforms
    Unix/X11 Windows Android Maemo/MeeGo
    Wiki edits
    10

    Default Re: Custom Plugin Trouble

    So... it can find cl.exe but not mt.exe? That's hardly possible unless you don't have mt.exe at all
    Your biological and technological distinctiveness will be added to our own. Resistance is futile.

    Please ask Qt related questions on the forum and not using private messages or visitor messages.


Similar Threads

  1. Trouble with plugin system's documentation
    By niklas in forum Qt Programming
    Replies: 8
    Last Post: 6th March 2009, 22:07
  2. problem loading custom plugin on Qt Designer 4
    By raman_31181 in forum Qt Tools
    Replies: 18
    Last Post: 26th September 2008, 09:42
  3. custom plugin load fails...
    By raman_31181 in forum Qt Tools
    Replies: 3
    Last Post: 3rd July 2008, 09:37
  4. QPluginLoader not recognizing a plugin
    By KShots in forum Qt Programming
    Replies: 3
    Last Post: 29th June 2007, 14:13
  5. Testing a custom Plugin
    By maluta in forum Qt Programming
    Replies: 5
    Last Post: 31st October 2006, 15:09

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Digia, Qt and their respective logos are trademarks of Digia Plc in Finland and/or other countries worldwide.