0

最近、qtクリエーター用にSFMLをセットアップすることができましたが、以下のコードをコンパイルすると、プログラムとは関係のない3つの奇妙なエラーが発生します。他のC++プログラムが正常に動作することを指定する必要があります。これはコードです:

#include <SFML/System.hpp>
#include <iostream>

int main()
{
    sf::Clock Clock;
    while (Clock.GetElapsedTime() < 5.f)
    {
        std::cout << Clock.GetElapsedTime() << std::endl;
        sf::Sleep(0.5f);
    }

    return 0;
}

エラーは次のとおりです。

f:\SFML-1.6\include\SFML\System\Unicode.hpp:82: error: C2535: 'sf::Unicode::Text::Text(const wchar_t *)' : member function already defined or declared

f:\SFML-1.6\include\SFML\System\Unicode.hpp:87: error: C2535: 'sf::Unicode::Text::Text(const std::wstring &)' : member function already defined or declared

f:\SFML-1.6\include\SFML\System\Unicode.hpp:99: error: C2535: 'sf::Unicode::Text::operator std::wstring(void) const' : member function already defined or declared

これを引き起こしている可能性のあるアイデアはありますか?

編集:

また、エラーが発生したファイルには触れたことがないことにも言及する必要があります。私が試したのは、SFML Webサイトからサンプルコードを貼り付けることだけで、上記のエラーが発生しました。SFMLを正しく設定したと思います。

EDIT2: Windows XP SP3、Mingwコンパイラを使用しています

4

2 に答える 2

1

私はずっと前に問題に直面しました.

QMake はコンパイラ オプションtreat wchar_t as a built-in typefalseに設定しwchar_t、typedef をに設定します。これにより、と(コンストラクターのように ) のunsigned short両方でオーバーロードされた関数が失敗します...unsigned shortwchar_tsf::Unicode::Text

SFML ソースを変更する以外の唯一の解決策は、\mkspecs\win32-msvc2008\qmake.conf ファイルでオプション "Zc:wchar_t" を "-Zc:wchar_t" に変更することだと思います。そして、おそらくQtを再コンパイルします。

構成ファイルを変更してqtを再コンパイルしたところ、魅力的に機能し始めました。

于 2012-08-25T14:19:08.447 に答える
0

http://msdn.microsoft.com/en-us/library/dh8che7s%28v=vs.80%29.aspxによると

/ Zc:wchar_t-が指定されている場合、コンパイラーはwchar_tを定義するか、wchar_tを定義する多くのヘッダーファイルの1つ(たとえば、wchar.h)をインクルードする必要があります。通常、wchar_tはunsignedshortとして定義されます。

VisualStudio開発環境でこのコンパイラオプションを設定するには

Open the project's Property Pages dialog box. For details, see Modifying Project Settings.

Click the C/C++ folder.

Click the Language property page.

Modify the Treat wchar_t as Built-in Type property.

したがって、問題はConfig.hppにあることです

typedef unsigned short Uint16;

この/Zc:wchar_tオプションを使用すると、wchar_tは

typedef unsigned short wchar_t;

だから彼らは等しい

于 2012-08-25T14:24:14.187 に答える