Ответ 1
Отрывок из Документов QT:
В зависимости от вашей целевой платформы Qt предоставляет специальные макросы, которые содержат необходимые определения:
- Q_DECL_EXPORT должен быть добавлен к объявлениям символов, используемых при компиляции разделяемой библиотеки.
- Q_DECL_IMPORT должен быть добавлен к объявлениям символов, используемых при компиляции клиента, использующего общую библиотеку.
Я не проверял код QT, но, скорее всего, этот макрос будет делать следующее:
#ifdef _WIN32 || _WIN64
#define Q_DECL_EXPORT __declspec(dllexport)
#define Q_DECL_IMPORT __declspec(dllimport)
#else
#define Q_DECL_EXPORT
#define Q_DECL_IMPORT
#endif
__declspec(dllimport)
и __declspec(dllexport)
указывает компоновщику импортировать и экспортировать (соответственно) символ из или в DLL. Это зависит от Windows.
В вашем конкретном случае этот макрос, вероятно, можно удалить, так как main()
скорее всего не является частью библиотеки.