성태의 닷넷 이야기
홈 주인
모아 놓은 자료
프로그래밍
질문/답변
사용자 관리
사용자
메뉴
아티클
외부 아티클
유용한 코드
온라인 기능
MathJax 입력기
최근 덧글
[정성태] How can I tell whether two programs...
[정성태] The case of the fail-fast crashes c...
[정성태] Creating Docker multi-arch images f...
[정성태] BinaryFormatter removed from .NET 9...
[정성태] Extending the Windows Shell Progres...
[우광현] 와..... 범위를 잡았으니 클라이언트가 해당 범위를 확인해본다...
[정성태] 딱히, 그것 이상으로 더 설명할 내용이 없습니다. 동적 포...
[정성태] If Windows 3.11 required a 32-bit p...
[정성태] What is a hard error, and what make...
[괴물신인] 질문작성자인데 이 글을 이제봤네요 ㄷㄷ 이 글처럼 타입별로 인...
글쓰기
제목
이름
암호
전자우편
HTML
홈페이지
유형
제니퍼 .NET
닷넷
COM 개체 관련
스크립트
VC++
VS.NET IDE
Windows
Team Foundation Server
디버깅 기술
오류 유형
개발 환경 구성
웹
기타
Linux
Java
DDK
Math
Phone
Graphics
사물인터넷
부모글 보이기/감추기
내용
<div style='display: inline'> <h1 style='font-family: Malgun Gothic, Consolas; font-size: 20pt; color: #006699; text-align: center; font-weight: bold'>SFML.NET 라이브러리 설정 방법</h1> <p> 간단하게 정리하면, 게임 같은 류의 프로그램을 만들 때 3D 그래픽 처리 이외의 기능들 - 가령 네트워크라던가 입력 처리라던가... 하는 작업을 이 라이브러리로 해결할 수 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Simple and Fast Multimedia Library ; <a target='tab' href='https://www.sfml-dev.org/index.php'>https://www.sfml-dev.org/index.php</a> </pre> <br /> 닷넷 버전도 있는데요,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > SFML.NET ; <a target='tab' href='https://www.sfml-dev.org/download/sfml.net/'>https://www.sfml-dev.org/download/sfml.net/</a> </pre> <br /> 설치는 그냥 플랫폼 버전에 맞게 NuGet으로 해결할 수 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > [32비트] Install-Package SFML.Net -Version 2.1.5 [64비트] Install-Package SFML.Net.x64 -Version 2.4.0 </pre> <br /> 그런데 위와 같이만 하고 다음의 코드를 작성해 실행해 보면,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > using SFML.Window; using System.Windows.Forms; namespace WindowsFormsApp1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); if (Keyboard.IsKeyPressed(Keyboard.Key.A) == true) { } } } } </pre> <br /> 이런 오류가 발생합니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > System.DllNotFoundException: 'Unable to load DLL 'csfml-window-2': The specified module could not be found. (Exception from HRESULT: 0x8007007E)' </pre> <br /> 즉, csfml-window-2.dll 파일이 없다는 것입니다. Github repo 문서를 보면,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > SFML.Net ; <a target='tab' href='https://github.com/SFML/SFML.Net'>https://github.com/SFML/SFML.Net</a> </pre> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > To run SFML.NET executables you must have a copy of CSFML. CSFML can be compiled from source (https://github.com/SFML/CSFML/) or downloaded from the offical release page (http://www.sfml-dev.org/download/csfml/). Also note that since CSFML depends on the main SFML project you also need all SFML runtime dependencies. </pre> <br /> csfml 라이브러리를 직접 구해야 한다고 합니다. 따라서 다음의 사이트에 들어가,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > CSFML 2.4 ; <a target='tab' href='https://www.sfml-dev.org/download/csfml/'>https://www.sfml-dev.org/download/csfml/</a> </pre> <br /> (이 글에서는 64비트로 빌드된) 라이브러리를 다운로드해,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Visual C++ / GCC - 64-bit ; <a target='tab' href='https://www.sfml-dev.org/files/CSFML-2.4-windows-64-bit.zip'>https://www.sfml-dev.org/files/CSFML-2.4-windows-64-bit.zip</a> </pre> <br /> 압축을 풀면 이렇습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > . ├───bin ├───doc │ └───html ├───include │ └───SFML │ ├───Audio │ ├───Graphics │ ├───Network │ ├───System │ └───Window └───lib ├───gcc └───msvc </pre> <br /> 이 중에서 bin 폴더에 다음의 DLL들이 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > csfml-audio-2.dll csfml-graphics-2.dll csfml-network-2.dll csfml-system-2.dll csfml-window-2.dll </pre> <br /> 그렇습니다. 이 파일들을 여러분들의 C# 프로젝트에 다음과 같은 식으로 추가하고,<br /> <br /> <img alt='use_sfml_net_1.png' src='/SysWebRes/bbs/use_sfml_net_1.png' /><br /> <br /> 다시 실행하면 이제는 오류 없이 정상적으로 동작하게 됩니다. 참고로, 이 글의 본문에 나온 Keyboard 타입 정도를 쓰는 거라면 모든 DLL을 가져올 필요 없이 오류에 나온 "csfml-window-2.dll" 파일만 있어도 됩니다.<br /> <br /> (첨부 파일은 이 글의 설명대로 구성한 예제 프로젝트입니다.)<br /> <br /> <hr style='width: 50%' /><br /> <br /> Visual C++ 개발 환경이 구성된 경우, vcpkg에 (2018-11-17 기준 2.5.1 버전의) "sfml"이 등록되어 있으므로 다음과 같이 아주 간편하게 소스코드로부터 빌드하는 것이 가능합니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > [32비트] vcpkg install sfml [64비트] vcpkg install sfml:x64-windows </pre> <br /> 빌드 후, .\vcpkg\installed\x64-windows\bin 폴더에 가면 csfml-*-2.dll 파일들을 볼 수 있습니다. (이렇게 빌드한 DLL을 사용하는 경우, pdb와 함께 소스 코드 파일까지 로컬에 있기 때문에 디버그 시 C/C++ 함수 내부로 진입하는 것도 가능합니다.)<br /> <br /> 혹시나 해서, 저처럼 예전 버전의 vcpkg를 가지고 계신 분들을 위해 언급하자면? 위의 vcpkg 빌드를 할 때 "Error: Building package bzip2:x86-windows failed with: BUILD_FAILED" 오류가 발생한다면 다음의 글을 참고해 업데이트하시면 됩니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > vcpkg install bzip2 빌드 에러 - "Error: Building package bzip2:x86-windows failed with: BUILD_FAILED" ; <a target='tab' href='http://www.sysnet.pe.kr/2/0/11780'>http://www.sysnet.pe.kr/2/0/11780</a> </pre> </p><br /> <br /><hr /><span style='color: Maroon'>[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]</span> </div>
첨부파일
스팸 방지용 인증 번호
2889
(왼쪽의 숫자를 입력해야 합니다.)