Qt Неопределенная ссылка на - PullRequest
2 голосов
/ 12 февраля 2012

У меня был какой-то грязный код, поэтому я, наконец, разделил его на заголовки и источники, но теперь я получаю 136 предупреждений о

inline function 'void suchandsuch()' used but never defined

и ошибках

undefined reference to 'Widget::Widget(QWidget*)'

Я пробовал QMakeВсе источники находятся в .pro-файле, перестраиваются, очищаются и удаляются все файлы moc.

1 Ответ

3 голосов
/ 12 февраля 2012

Первая проблема заключается во встроенных функциях. Если вы знакомы с функциями шаблона, встроенные функции имеют те же требования. Им нужно, чтобы детали их реализации были включены в заголовочный файл, чтобы компилятор мог генерировать встроенный код всякий раз, когда он включен где-то еще. Вы не можете реализовать это в обычном файле .cpp.

Что касается второй проблемы, если Widget::Widget() относится к классу QWidget и не был скопирован из журнала ошибок, я предполагаю, что это означает, что ваш код неправильно связывается с библиотекой QtGui , Убедитесь, что в файле .pro нет строки, удаляющей его, так как в противном случае он включен по умолчанию (иначе вам не нужна строка с надписью QT -= gui).

Если это не проблема, и класс Widget, для которого он не может найти конструктор Widget(QWidget*), является вашим собственным классом, то проблема может заключаться просто в том, что в файле .cpp виджета нет реализации для Widget::Widget(QWidget*) функция.

...