다음과 같은 간단한 C++ SFML 응용 프로그램을 CLion에서 실행하려고합니다.하지만 시도 할 때 항상 오류 메시지 Test2.exe has stopped working이 표시됩니다.SFML이 Windows의 CLion에서 작동하지 않습니다.
MAIN.CPP는
#include <SFML/Graphics.hpp>
int main()
{
sf::RenderWindow window(sf::VideoMode(200, 200), "SFML works!");
sf::CircleShape shape(100.f);
shape.setFillColor(sf::Color::Green);
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
}
window.clear();
window.draw(shape);
window.display();
}
return 0;
}
이 CMake에 문제가있을 수 있습니다,하지만 난 CLion에서 오류 메시지가없는, 그래서 SFML가 제대로 찾을 생각합니다./프로그램 파일/SFML-2.4.2, 내가는 MinGW의 최신 버전 (2.4.2)를 사용 :
CMakeLists.txt
cmake_minimum_required(VERSION 3.9)
project(Test2)
set(CMAKE_CXX_STANDARD 17)
add_executable(Test2 main.cpp)
set(SFML_ROOT "C:/Program Files/SFML-2.4.2")
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake_modules")
find_package(SFML 2 REQUIRED graphics network audio window system)
if(SFML_FOUND)
include_directories(${SFML_INCLUDE_DIR})
target_link_libraries(${PROJECT_NAME} ${SFML_LIBRARIES} ${SFML_DEPENDENCIES})
endif()
내 SFML은 C에 위치하고 있습니다. 다음 MinGW 버전이 있습니다 : MingGW configuration. 내 운영 체제는 Windows 8.1 Enterprise입니다. 별도로 CLion과 SFML (Code :: Blocks)은 완벽하게 작동 할 수 있습니다.
CMakeLists.txt에 추가하는 것을 잊어 버렸거나 SFML이 작동하도록 CLion의 일부 설정을 수정해야합니까?
SFML을 직접 컴파일 했습니까? 그렇지 않으면 버전 불일치가있을 수 있습니다. [Dependency Walker] (https://dependencywalker.com/)를 사용하여 실행 파일을로드하여 어떤 DLL이로드되었는지 확인할 수도 있습니다 ('PATH' 환경 변수에 따라 어딘가에 잘못된 버전이 나타날 수 있기 때문입니다). – Mario
감사합니다 @ 마리오, 당신이 언급 한 프로그램을 사용하여, 나는 CMakeLists.txt에 다음 줄을 추가하여 문제가 무엇인지 알아낼 수 있었다 : 세트 (CMAKE_EXE_LINKER_FLAGS "- 정적") 세트 (SFML_STATIC_LIBRARIES TRUE) – user3738870
' -static'은 올바른 라이브러리를 선택하고 플래그 다음의 첫 번째 라이브러리에서만 작동하므로 (다시 반복해야 함)이 주석을 다시 게시해야합니다. 다른 사람이 같은 문제가있는 경우 대답하십시오. – Mario