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...