Я пытаюсь зарегистрировать файл, включающий только пространство имен с qmlRegisterUncreatableMetaObject
для использования в QML
Пространство имен находится в моем constants.h
файле, который выглядит следующим образом:
#ifndef K_CONSTANTS_H
#define K_CONSTANTS_H
#include <QString>
#include <QObject>
static const QString K_Red = "#d20019";
static const QString K_DarkRed = "#a20000";
static const QString K_Green = "#1da019";
static const QString K_DarkGray = "#FF4b4b4b";
static const unsigned int EXIT_CODE_REBOOT = 1234567890;
namespace Strings {
Q_NAMESPACE
static const char* REPAIR = QT_TR_NOOP("Repair");
static const char* MAINTENANCE = QT_TR_NOOP("Maintenance");
static const char* DISTURBANCE = QT_TR_NOOP("Disturbance");
static const char* MEAL_BREAK = QT_TR_NOOP("Meal Break");
}
#endif // K_CONSTANTS_H
Я пытаюсь зарегистрироваться в конструкторе K_Administration.cpp
, который вызывается до вызова app.exec()
.
qmlRegisterUncreatableMetaObject(Strings::staticMetaObject, "MyConstants", 1, 0, "Strings", "Not Instantiable!" );
это всегда приводит к
k_administration .obj: -1: Ошибка: LNK2001: неразрешенный внешний символ "struct QMetaObject const Strings :: staticMetaObject" (? staticMetaObject@Strings@@3UQMetaObject@@B)
Я могу получить доступ к пространству имен из любого места в моем проекте. Также можно позвонить просто Strings::staticMetaObject
. но, похоже, он потерпит неудачу, как только значение будет присвоено Strings::staticMetaObject
.
Может быть, важно знать, что K_Administration.cpp
и K_Constants.h
находятся в 2 разных подпроектах моего проекта