已经定义或声明了“sf :: Unicode :: Text :: text”成员函数

时间:2012-08-21 14:54:16

标签: c++ qt-creator sfml

我最近设法为qt创建者设置了SFML,但是在编译下面的代码时,我得到了三个与我的程序无关的奇怪错误。我必须指定其他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网站上的示例代码,导致上述错误。我相信我已经正确设置了SFML。

EDIT2: 我正在使用Windows XP SP3,Mingw编译器

2 个答案:

答案 0 :(得分:1)

我很久以前遇到过这个问题,唯一能解决的问题和解释(从我最初咨询过的另一篇论坛帖子中复制):

  

QMake将编译器选项treat wchar_t as a built-in type设置为   false wchar_tunsigned short作为unsigned short的typedef   wchar_tsf::Unicode::Text重载的函数(如。{   {{1}}构造函数)失败...

     

我认为除了修改SFML源之外,唯一的解决方案是   将选项“Zc:wchar_t”更改为“-Zc:wchar_t”   \ mkspecs \ win32-msvc2008 \ qmake.conf文件。然后可能   重新编译Qt。

我更改了配置文件并重新编译了qt,它已经开始作为魅力。

答案 1 :(得分:0)

根据http://msdn.microsoft.com/en-us/library/dh8che7s%28v=vs.80%29.aspx

如果指定了/ Zc:wchar_t-,编译器要求您定义wchar_t或包含定义它的许多头文件之一(例如,wchar.h)。通常, wchar_t被定义为unsigned short

在Visual Studio开发环境中设置此编译器选项

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;

所以他们是等于