1

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: 私の英語の間違いを許してください。

4

1 に答える 1

0

まず、スコープ演算子は foo"::"method_bar(); です。

関数の使用前にヘッダーが含まれていることを確認して、この関数を呼び出す場所が関数の宣言について認識できるようにします

QT で名前空間を使用しても問題ありません。

もう1つの提案は

名前空間 foo を使用します。

完全なコードを見ると、問題を解決するのに本当に役立ちます

于 2012-10-16T18:31:07.103 に答える