Results 1 to 2 of 2

Thread: Qt5 Plugin: undefined symbol problem

  1. #1
    Join Date
    Dec 2011
    Posts
    21
    Thanks
    2
    Qt products
    Qt4 Qt5
    Platforms
    Unix/X11 Windows

    Question Qt5 Plugin: undefined symbol problem

    Hi,

    Today I faced really strange problem. Every solution I found doesn't work...
    My interfaces and plugins used to work with Qt4 but after migrating to Qt5 they don't work anymore.

    after loading this error appears:
    Qt Code:
    1. "libdialog.so" true "Cannot load library [...]/libdialog.so: ([...]/libdialog.so: undefined symbol: _ZTIN6editor10editorcore6ModuleE)"
    To copy to clipboard, switch view to plain text mode 
    I'm also using Cmake to build all stuff

    here is My interface class
    Qt Code:
    1. namespace editor {
    2. namespace editorcore {
    3.  
    4. class Module {
    5. public:
    6. Module();
    7. virtual ~Module();
    8.  
    9. void load(const QString& newFileName);
    10. void save(const QString& newFileName);
    11.  
    12. virtual QString getModuleName() const =0;
    13. const QString& getFileName() const;
    14. QWidget* getQtWidget() const;
    15.  
    16. void setMainWindow(QMainWindow *mainWindow);
    17.  
    18. protected:
    19. virtual void onLoad() =0;
    20. virtual void onSave() =0;
    21. virtual void onSetMainWindow() =0;
    22.  
    23. void setQtWidget(QWidget* newQWidget);
    24.  
    25. QMainWindow *_mainWindow;
    26. private:
    27. ScopedPtr<QString> _fileName;
    28. QWidget* _qtWidget;
    29. };
    30. // class Module
    31.  
    32. }// namespace editorcore
    33. } // namespace editor
    34.  
    35. Q_DECLARE_INTERFACE(editor::editorcore::Module, INTERFACE_NAME)
    36.  
    37. //////////////////////////////////////////////////////////
    38. // implementation class:
    39.  
    40. namespace editor {
    41. namespace dialogeditor {
    42.  
    43. class DialogEditorModule: public QObject, public editor::editorcore::Module {
    44. Q_OBJECT
    45.  
    46. Q_INTERFACES(editor::editorcore::Module)
    47. Q_PLUGIN_METADATA(IID "editor.DialogEditorModule" FILE "DialogEditorModule.json")
    48.  
    49. public:
    50. DialogEditorModule();
    51. virtual ~DialogEditorModule();
    52. virtual QString getModuleName() const;
    53.  
    54. protected:
    55. virtual void onLoad();
    56. virtual void onSave();
    57. virtual void onSetMainWindow();
    58. };
    59.  
    60. } // namespace dialogeditor
    61. } // namespace editor
    62.  
    63. ////////////////////////////////////
    64. //json file:
    65. {
    66. "Keys": [ "DialogEditorModule" ]
    67. }
    To copy to clipboard, switch view to plain text mode 

    Qt Code:
    1. #####################
    2. #main project file
    3.  
    4. CMAKE_MINIMUM_REQUIRED(VERSION 2.8.9)
    5.  
    6. GET_FILENAME_COMPONENT(name "${CMAKE_CURRENT_SOURCE_DIR}" NAME)
    7.  
    8. PROJECT(${name} CXX)
    9.  
    10. set(CMAKE_INCLUDE_CURRENT_DIR ON)
    11.  
    12. find_package(Qt5Core REQUIRED)
    13. find_package(Qt5Gui REQUIRED)
    14. find_package(Qt5Quick REQUIRED)
    15. find_package(Qt5Widgets REQUIRED)
    16.  
    17. include_directories(${Qt5Core_INCLUDE_DIRS})
    18. include_directories(${Qt5Gui_INCLUDE_DIRS})
    19. include_directories(${Qt5Quick_INCLUDE_DIRS})
    20. include_directories(${Qt5Widgets_INCLUDE_DIRS})
    21.  
    22.  
    23. add_subdirectory(app)
    24. add_subdirectory(dialog)
    25.  
    26.  
    27. #####################
    28. # app project file
    29.  
    30. set (COMPILE_ARGS
    31. ${${PROJECT_NAME}_SRC_FILES}
    32. ${${PROJECT_NAME}_INC_FILES}
    33. ${${PROJECT_NAME}_MOC_FILES}
    34. ${${PROJECT_NAME}_FORMS}
    35. )
    36.  
    37. add_executable(${PROJECT_NAME} ${COMPILE_ARGS})
    38.  
    39. INIT_LIBS()
    40. qt5_use_modules(${PROJECT_NAME} Core)
    41. qt5_use_modules(${PROJECT_NAME} Gui)
    42. qt5_use_modules(${PROJECT_NAME} Widgets)
    43.  
    44.  
    45. #####################
    46. # plugin project file
    47.  
    48. ADD_LIBRARY(${PROJECT_NAME} MODULE
    49. ${${PROJECT_NAME}_SRC_FILES}
    50. ${${PROJECT_NAME}_INC_FILES}
    51. ${${PROJECT_NAME}_MOC_FILES}
    52. )
    53.  
    54. qt5_use_modules(${PROJECT_NAME} Core)
    55. qt5_use_modules(${PROJECT_NAME} Gui)
    56. qt5_use_modules(${PROJECT_NAME} Widgets)
    To copy to clipboard, switch view to plain text mode 

    any idea? I'm totally puzzled...

  2. #2
    Join Date
    Dec 2011
    Posts
    21
    Thanks
    2
    Qt products
    Qt4 Qt5
    Platforms
    Unix/X11 Windows

    Default Re: Qt5 Plugin: undefined symbol problem

    The reason of that was
    Qt Code:
    1. add_definitions(-fvisibility=hidden)
    To copy to clipboard, switch view to plain text mode 
    And I didn't export my plugin properly ...

Similar Threads

  1. Replies: 2
    Last Post: 6th March 2012, 11:47
  2. undefined symbol while loading plugin
    By qlands in forum Qt Programming
    Replies: 3
    Last Post: 9th August 2011, 15:46
  3. Replies: 0
    Last Post: 10th May 2011, 15:58
  4. Replies: 1
    Last Post: 22nd June 2010, 20:56
  5. undefined symbol in library
    By quickNitin in forum General Programming
    Replies: 1
    Last Post: 16th November 2006, 11:50

Tags for this Thread

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.