在使用XCode处理C ++ 11和SFML时遇到一些问题。我已经有了库libc ++和C ++ 11,但是在使用字符串文字命名窗口时,代码出现了问题。之前有人遇到过这个并且知道如何修复它吗?谢谢!
错误:
的main.cpp
#include <SFML/Audio.hpp>
#include <SFML/Graphics.hpp>
#include <iostream>
#include <memory>
#include "System.hpp"
int main(int, char const**)
{
std::shared_ptr<System> main;
main.reset(new System());
main->run();
return EXIT_SUCCESS;
}
System.hpp
#ifndef __AdventuresOfGabe__System__
#define __AdventuresOfGabe__System__
class System
{
public:
System();
void run();
void runEvents();
private:
std::shared_ptr<sf::RenderWindow> _window;
};
#endif /* defined(__AdventuresOfGabe__System__) */
System::System()
{
_window.reset(new sf::RenderWindow(sf::VideoMode(600, 400), "Adventures of Gabe"));
_window->setPosition(sf::Vector2i(400,400));
_window->setFramerateLimit(60);
}
void System::run()
{
while(_window->isOpen())
{
runEvents();
}
}
void System::runEvents()
{
sf::Event event;
while(_window->pollEvent(event) )
{
if( event.type == sf::Event::Closed )
_window->close();
if( (event.type == sf::Event::KeyPressed) && (event.key.code == sf::Keyboard::Escape) )
_window->close();
}
}
答案 0 :(得分:1)
关于模板设置的一些说法。如果为C ++编译器和标准库选择不兼容的选项,最终会出现链接器错误。请务必遵循以下准则:
- 如果您从下载页面下载了“GCC”版本,则应选择带有GCC和libstdc ++且目标为10.5的C ++ 98。
- 如果从下载页面下载了“Clang”版本,则应选择带有Clang和libc ++的C ++ 11。
所以你需要下载其他版本的SDK,即«Clang»版本。
在不相关的说明中,您可以使用std::make_shared
来简化代码。