1

我有一个在 Linux 中构建没有问题的应用程序,现在我正在尝试针对 Windows 编译它,我创建了一个 .pro 文件专门用于在 Windows 中编译它。

我使用了一个伪类(只是一个带有大量方法的命名空间,但没有类语句,因此我可以在不创建对象的情况下使用它)在 Linux 中工作得很好,但是当我尝试针对 Windows 进行编译时,我得到一个'使用此伪类的所有代码中未解析的外部符号。

伪类是这样的:

namespace foo {
   bool method_bar();
}

然后我像这样使用它:

foo:method_bar(); 

非常简单,有点像静态方法。

在有人问我之前,为什么不首先使用静态方法?我有一些特殊情况,我不能将这些方法用作静态方法。这就是为什么我直接在命名空间下构建方法。

因此,在我的 .PRO 文件中,我从我的伪类中添加了 .h 和 .cpp 文件,如下所示:

 HEADERS += \
       ....
       include/foo.h
       ....


    SOURCES += \
       ....
       include/foo.cpp
       ----

尽管它在我的项目中包含这些文件,但它抛出了 LNK2019: unresolved external symbol 错误。

我不是编程的初学者,但我是 Qt 的初学者。

任何帮助将不胜感激。

ps:原谅我的英文错误。

4

1 回答 1

0

首先范围运算符是 foo"::"method_bar();

请注意在使用函数之前包含标题,以便您调用此函数的地方知道函数的声明

在 QT 中使用命名空间没有问题。

还有一个建议是

使用命名空间 foo;

查看完整的代码真的可以帮助我解决问题

于 2012-10-16T18:31:07.103 回答