我最近设法为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编译器
答案 0 :(得分:1)
我很久以前遇到过这个问题,唯一能解决的问题和解释(从我最初咨询过的另一篇论坛帖子中复制):
QMake将编译器选项
treat wchar_t as a built-in type
设置为false
wchar_t
将unsigned short
作为unsigned short
的typedefwchar_t
和sf::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;
所以他们是等于