C++ Mac Snow Leopard上的Qt 5.3.2:ld:未找到架构x86_64的符号[clang、objective-c和c+;+;]
我通读了许多性质相同的问题,但没有找到我需要的东西 我正在编译一个关于雪豹(10.6.8)和Qt5.3.2的项目 在我的程序的C++ Mac Snow Leopard上的Qt 5.3.2:ld:未找到架构x86_64的符号[clang、objective-c和c+;+;],c++,objective-c,macos,qt,osx-snow-leopard,C++,Objective C,Macos,Qt,Osx Snow Leopard,我通读了许多性质相同的问题,但没有找到我需要的东西 我正在编译一个关于雪豹(10.6.8)和Qt5.3.2的项目 在我的程序的main方法中,我检查它是否在mac上,并打开一个基于cocoa的窗口,否则创建标准QApplication和MainWindow配置。我有一个.mmobjective-c类,它包含窗口代码,当包含其相应的头文件时,它会给我以下错误: Undefined symbols for architecture x86_64: "QMacApplication::QMacAp
main
方法中,我检查它是否在mac上,并打开一个基于cocoa的窗口,否则创建标准QApplication
和MainWindow
配置。我有一个.mm
objective-c类,它包含窗口代码,当包含其相应的头文件时,它会给我以下错误:
Undefined symbols for architecture x86_64:
"QMacApplication::QMacApplication()", referenced from:
_main in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我正在使用QT官方github repo中修改后的代码,用于qtmacextras
,将cocoa窗口代码放入自己的库中,我可以导入并在其他应用程序中使用。请看,尽管我使用的是5.3.2兼容的提交
为什么会出现此错误?正如其他问题所指出的,此错误可能来自缺少的框架 但是这个特殊错误的原因是我的项目
pro
文件中缺少了一些行。
我使用了OBJECTIVE\u SOURCES
来包含我的.mm
文件,但我没有将OBJECTIVE\u头
包含在头文件中——即使它不包含任何OBJECTIVE-c代码,并且我已经在HEADERS
指令中指定了它
以下是我的.pro
文件的简明版本:
TARGET = QMacApplication
TEMPLATE = lib
QT += widgets core macextras
QT_PRIVATE += gui-private core-private
QMAKE_CXXFLAGS_GNUCXX11 = -std=c++98
CONFIG -= c++11
load(qt_build_config)
ios {
LIBS_PRIVATE += -framework UIKit
} else {
LIBS_PRIVATE += -framework AppKit
}
SOURCES += \
window.cpp
HEADERS += qmacapplication.h\
qmacapplication_global.h \
window.h
OBJECTIVE_SOURCES += qmacapplication.mm
OBJECTIVE_HEADERS += qmacapplication.h
当我从HEADERS
指令中删除qmacapplication.h
时,它会编译,但将其保留在指令中似乎也是安全的
这是使用xcode 4.2,如果有必要的话