2

我目前正在尝试构建和运行 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项目有什么要改变的吗?

提前致谢

4

2 回答 2

3

我建议按照这些步骤来找出重复项是否有问题

  • 首先通过打开检查您的项目Build Phases->Compile Sources,看看您的课程是否有任何重复项。
  • 如果这不起作用,请尝试删除您的派生数据,并在 XCode 上清理您的产品。
  • 否则删除所有编译源并再次将所有 .m 文件添加到您的项目中

希望这会有所帮助!

于 2014-04-22T13:03:52.633 回答
0

我找到了问题的根源。

QT += declarative我在我的文件中做,.pro但没有在其他地方使用它(我在使用QQuickView之前使用QDeclarativeView)。 删除它解决了我的问题。我不知道为什么它会导致问题,可能是因为它没有被使用(我在我的项目中检查了其他但没有其他包含它)。
.pri

于 2014-04-23T07:49:17.650 回答