Дублирование символов при компиляции приложения QtQuick2

В настоящее время я пытаюсь создать и запустить приложение QtQuick 2, но появляется ошибка повторяющегося символа:

ld: 55 duplicate symbols for architecture i386 и вот несколько дубликатов:

duplicate symbol __ZTS16QActionAnimation in:
/Users/momo/Qt5.2.1/5.2.1/ios/lib/libQt5Quick_iphonesimulator_debug.a(qquickanimation.o)    /Users/momo/Qt5.2.1/5.2.1/ios/lib/libQt5Declarative_iphonesimulator_debug.a(moc_qdeclarativeanimation_p_p.o)

duplicate symbol __Z30_q_interpolateShortestRotationRdS_d in:
/Users/momo/Qt5.2.1/5.2.1/ios/lib/libQt5Declarative_iphonesimulator_debug.a(qdeclarativeanimation.o)
/Users/momo/Qt5.2.1/5.2.1/ios/lib/libQt5Quick_iphonesimulator_debug.a(qquickanimation.o)

duplicate symbol __Z31_q_interpolateClockwiseRotationRdS_d in:
/Users/momo/Qt5.2.1/5.2.1/ios/lib/libQt5Declarative_iphonesimulator_debug.a(qdeclarativeanimation.o)
/Users/momo/Qt5.2.1/5.2.1/ios/lib/libQt5Quick_iphonesimulator_debug.a(qquickanimation.o)

duplicate symbol __Z38_q_interpolateCounterclockwiseRotationRdS_d in: /Users/momo/Qt5.2.1/5.2.1/ios/lib/libQt5Declarative_iphonesimulator_debug.a(qdeclarativeanimation.o)   /Users/momo/Qt5.2.1/5.2.1/ios/lib/libQt5Quick_iphonesimulator_debug.a(qquickanimation.o)

Вот различные включения файлов проекта:

main.cpp :

#include <QtGui/QGuiApplication>
#include <QQmlContext>
#include <QScreen>
#include <QRect>
#include "qtquick2applicationviewer.h"
#include "dataobject.h"

int main(int argc, char *argv[])
{
    ...
}

dataobject.cpp :

#include "dataobject.h"

 DataObject::DataObject(QObject *parent)
     : QObject(parent)
 {
 }

 ...

dataobject.h :

#ifndef DATAOBJECT_H
#define DATAOBJECT_H

#include <QObject>

class DataObject : public QObject
{
    ...
};

 #endif // DATAOBJECT_H

Что мне показалось странным, так это то, что есть много повторяющихся символов, но не в моих файлах ... Это происходит только при работе с iOS, а не с настольным компьютером (либо Mac, либо Windows) или Android.

Есть ли что-то изменить в проекте xcode?

заранее спасибо


person Supermomo    schedule 22.04.2014    source источник


Ответы (2)


Я бы предложил выполнить следующие шаги, чтобы выяснить, есть ли что-то не так с дубликатами.

  • Сначала проверьте свой проект, открыв Build Phases->Compile Sources, и посмотрите, нет ли дубликатов в ваших классах.
  • Если это не сработает, попробуйте удалить производные данные и очистить свой продукт в XCode.
  • В противном случае удалите все источники компиляции и снова добавьте все файлы .m в свой проект.

Надеюсь, это поможет!

person E-Riddie    schedule 22.04.2014
comment
Не решил мою проблему, но выделил некоторые плохие включения в мой код. Спасибо. - person Supermomo; 22.04.2014
comment
Хм, тогда попробуйте эту штуку, удалите все ваши исходники компиляции и снова добавьте все файлы .m, и посмотрите, работает ли ваш проект! - person E-Riddie; 22.04.2014

Я нашел источник проблемы.

Я делал QT += declarative в своем файле .pro, но не использовал его где-либо еще (я использовал QDeclarativeView перед использованием QQuickView).
Удаление это решило мою проблему. Я не знаю, почему это вызывало проблему, возможно, потому, что оно не использовалось (я проверил другие .pri в своем проекте, но ни один из них не содержал его).

person Supermomo    schedule 23.04.2014