#cpp #qt
Сразу хочу сказать, что это я читал: Ссылка на неразрешенный внешний символ (возможные причины) Однако проблемы с классами Qt(который, по идее, свои библиотеки линкует автоматически) Несколько ошибок: testclass.obj:-1: ошибка: LNK2019: ссылка на неразрешенный внешний символ "__declspec(dllimport) public: __cdecl QTcpSocket::QTcpSocket(class QObject *)" (__imp_??0QTcpSocket@@QEAA@PEAVQObject@@@Z) в функции "public: __cdecl TestClass::TestClass(class QString)" (??TestClass@@QEAA@VQString@@@Z) testclass.obj:-1: ошибка: LNK2019: ссылка на неразрешенный внешний символ "__declspec(dllimport) public: virtual __cdecl QTcpSocket::~QTcpSocket(void)" (__imp_??1QTcpSocket@@UEAA@XZ) в функции "public: virtual void * __cdecl QTcpSocket::`scalar deleting destructor'(unsigned int)" (??_GQTcpSocket@@UEAAPEAXI@Z) testclass.obj:-1: ошибка: LNK2001: неразрешенный внешний символ ""public: virtual bool __cdecl QAbstractSocket::atEnd(void)const " (?atEnd@QAbstractSocket@@UEBA_NXZ)" И прочие ошибки в том же стиле. Кто может сказать, что не так с include-ами? #include#include #include #include #include "testclass.h" Пробовал подключать еще QAbstactSocket, не особо помогло (к слову он напрямую в коде не используется)
Ответы
Ответ 1
Подключение библиотеки в C++ делается в два этапа: для компилятора - пишется нужный #include для компоновщика - дописывается соответствующий параметр командной строки В Qt за параметры командной строки отвечает система сборки. Ей управляет файл проекта с расширением pro. В нем есть директива QT= core gui [...]. Чтобы стали доступны сетевые функции, туда нужно дописать network Чтобы библиотека вошла в состав exe, нужно компоновать проект с Qt статически. Для этого требуется: соблюсти условия LGPL (опубликовать объектные файлы) собрать Qt статически, что является нетривиальной задачей. Для Windows Чтобы подготовить комплект dll для выпуска exe, существует утилита windeployqt, входящая в состав Qt. Статья о ней. Для Linux Все зависит от целевого дистрибутива. В общих чертах, вы распространяете только ваш бинарник, а в пакете указываете зависимости от нужных библиотек. Остальное решает система управления зависимостями дистрибутива. Для Mac Аналогично Windows, только утилита называется macdeployqt Еще одна статься о подготовке к релизу
Комментариев нет:
Отправить комментарий