У меня есть приложение, которое было собрано без проблем в Linux, сейчас я пытаюсь скомпилировать его под Windows, я создал файл .pro специально для компиляции в Windows.
Я использую псевдокласс (просто пространство имен с множеством методов, но без оператора класса, чтобы я мог использовать его без создания объекта), это прекрасно работает в Linux, но
когда я пытаюсь скомпилировать против окон, я получаю «неразрешенный внешний символ» во всем коде, где используется этот псевдокласс.
Псевдокласс выглядит так:
namespace foo {
bool method_bar();
}
Тогда я использую это так:
foo:method_bar();
Довольно просто, немного похоже на статические методы.
Прежде чем кто-то спросит меня, почему бы не использовать статические методы в первую очередь; У меня есть особые ситуации, в которых я не могу использовать эти методы как статические. Вот почему я строю методы прямо под пространством имен.
Итак, в моем файле .PRO я добавил файлы .h и .cpp из своего псевдокласса следующим образом:
HEADERS += \
....
include/foo.h
....SOURCES += \
....
include/foo.cpp
----
Хотя он включает в себя файлы в моих проектах, он выдает LNK2019: неразрешенная внешняя ошибка символа.
Я не новичок в программировании, но я новичок в Qt.
Любая помощь будет высоко оценена.
ps: прости мои английские ошибки.
прежде всего оператор области видимости — foo «::» method_bar ();
Обратите внимание, что заголовок включен перед использованием функции, чтобы места, где вы когда-либо вызывали эту функцию, знали о объявлениях функции
Нет проблем в использовании пространства имен в QT.
Еще одно предложение будет
использование пространства имен foo;
Просмотр полного кода действительно помог бы мне решить проблему.
Других решений пока нет …