首先,我知道还有其他帖子在谈论这个错误,但我认为我的帖子有点不同。
我有一个带有此 pro 文件的 Qt 项目:
QT += core
QT += network
QT -= gui
TARGET = QDownloaderCLI
CONFIG += console
CONFIG -= app_bundle
TEMPLATE ...
我尝试使用 CONFIG -= X86_64
但没有任何变化。
在网上搜索我发现了一些奇怪的东西,我有一个带有公共(public)槽的 .h 文件,他在 .cpp 文件中实现了:
public slots:
void stateChanged(int state);
有了这个,我得到了错误消息,但如果我在 .h 和 .cpp 中注释 void stateChanged(int state);
它会起作用。
我该如何解决这个问题?
我也有警告:
directory not found for option '-F/Applications/Qt//5.1.0/clang_64/qtbase/lib'
和
"This version of OS X is unsupported" [-W#warnings]
我也试过“运行 qMake”,但我也收到了警告:
No .qmake.cache is present. This significantly slows down qmake with this makespec.
Call 'cache()' in the top-level project file to rectify this problem.
我在 Mac OS X 10.8.4 和 Qt 5.1.0 上
我的 .h 文件的代码:
#ifndef DOWNLOADER_H
#define DOWNLOADER_H
#include <QObject>
#include <QDebug>
#include <QFile>
// In Qt 5 no more QHttp
#include <QNetworkAccessManager>
class downloader : public QObject
{
Q_OBJECT
public:
explicit downloader(QObject *parent = 0);
void doDownload();
signals:
public slots:
void stateChanged(int state);
private:
QNetworkAccessManager *http;
};
#endif // DOWNLOADER_H
最佳答案
您需要提供编译输出以便我们可以帮助您,目前您只向我们提供了问题输出中的警告。
当我在 OSX 上有引用错误时,我通常会收到此错误。 即当我在我的 .h 文件中声明了一个函数然后还没有声明它时。
您是否测试过将 stateChanged 函数改为公开而不是插槽?
当您尝试通过右键单击 .cpp 文件中的函数并选择光标下的跟随符号来跟随该函数时会发生什么。
如果 .cpp 和 .h 文件之间的连接错误,您将在那里收到错误消息。 你也可以尝试在.h文件中声明函数来测试。
您收到的警告是您始终会收到的警告,它不应使应用程序无法运行。我每次运行应用程序时都会得到它。
请提供编译输出。
问候/RK
关于macos - Qt5 "symbol(s) not found for architecture x86_64",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17700784/