我有一个在 Linux 中构建的应用程序没有问题,现在我正在尝试针对 Windows 编译它,我创建了一个专门用于在 Windows 中编译它的 .pro 文件。
我使用了一个伪类(只是一个带有许多方法的命名空间,但没有类语句,所以我可以在不创建对象的情况下使用它)在 Linux 中工作得很好,但是 当我尝试针对 Windows 进行编译时,我在使用此伪类的所有代码中得到一个“未解析的外部符号”。
伪类是这样的:
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();
请注意在使用函数之前包含 header ,以便您调用此函数的地方知道函数的声明
在QT中使用命名空间没有问题。
还有一个建议是
使用命名空间 foo;
查看完整的代码确实可以帮助我解决问题
关于c++ - Qt 中的非类方法(使用 qtcreator)未解析的外部符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12916860/