【发布时间】:2012-08-16 23:04:45
【问题描述】:
我最近设法为 qt creator 设置了 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 编译器
【问题讨论】:
-
不知道,但通常我会查看源代码的预处理版本(myfile.cpp)。通常选项是 -E,但可能因编译器而异。类似:
CC -E <other options> my.cpp > preprocessed.cpp,--edit-- 您需要使用所有其他 cmd 行选项,以正常传递给 CC。 -
根据source code,最可能的原因是你在某个地方有
typedef wchar_t Unit16,或者typedef Uint16 wchar_t -
@Lol4t0,这不可能我什至没有碰它,但我会看看。
-
@可能取决于配置和系统头文件。
-
鉴于您将其与 Qt 相结合,我似乎记得这可能是由您的 Qt 配置引起的。也就是说,您的 qmake.conf 中可能启用了 Zc:wchar_t 选项...也许这已经给了您一些 Google-fu。
标签: c++ qt-creator sfml