Qt 5.3.2 для Ma c Snow Leopard: ld: символ (ы) не найдены для архитектуры x86_64 [clang, target- c и c ++] - PullRequest
0 голосов
/ 07 января 2020

Я прочитал много вопросов того же характера, но не нашел что-то определенное, c для того, что мне нужно.

Я собираю проект на Snow Leopard (10.6.8) и Qt 5.3 .2.

В методе main моей программы я проверяю, находится ли он на ма c, и открываю окно на основе какао, в противном случае создаю стандартную конфигурацию QApplication и MainWindow. У меня есть класс .mmjective- 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. для qtmacextras, помещая код окна какао в свою собственную библиотеку, которую я могу импортировать и использовать в других приложениях. См. https://code.qt.io/cgit/qt/qtmacextras.git/tree/examples/macextras/macfunctions?h=5.14, хотя я использую коммит 5.3.2.

Почему я получаю эту ошибку?

1 Ответ

0 голосов
/ 07 января 2020

Эта ошибка может возникать из-за отсутствия фреймворка, как указывали другие вопросы.

Но причиной этой конкретной ошибки было то, что мне не хватало некоторых строк в моем файле pro проекта. Я использовал OBJECTIVE_SOURCES для включения моего .mm файла, но я не включал OBJECTIVE_HEADERS в мой заголовочный файл - хотя он не содержал никакого объективного кода - c, и я уже указал его в * Директива 1007 *.

Вот краткая версия моего .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

Он компилируется, когда я удаляю qmacapplication.h из директивы HEADERS, но кажется безопасным для оставь это также.

Это использует xcode 4.2, если это имеет значение.

...