2017-12-09 5 views
0

SFML 2.0을 사용하여 체스 판을 그래픽으로 표시하려고합니다. 문제는 단순히 텍스처를로드 할 수 없다는 것입니다. 명령 loadFromFile이 작동하지 않고 이유를 모르겠습니다. 나는 이미 약 2 시간 동안 봤 거든, 여기에 stackoverflow하지만 솔루션을 찾지 못했습니다. 포함 및 라이브러리, .DLL 년대와 유니 코드에서 멀티 바이트 텍스트 형식을 변경 SFML loadFromFile 명령 관련 문제

  • .libs에 대한 모든 종속성을 설정

    • :

      내가 지금 무슨 짓을

      .

    • 작업 폴더에 .DLL 년대를 복사 LoadFile-를 사용하여 이미지 파일
    • 에 대한 전체 경로를 사용
    • (비주얼 스튜디오 내가 프로젝트에서 그들을 연결에도 DLL을 찾을 수 couldnt는 없다는 오류가 있었다) (비록 두 번째 인자가 선택 사항이라 할지라도) 2 개의 인자를 가진 명령어를 사용한다.
    • MDd에서 MD로 런타임 라이브러리를 변경한다. (해제 모드에서 작동 시키려고 시도한다.)
    • 모든 라이브러리를 링크하지는 않지만. ...- d.lib 종료 (다른 stackoverflow-thread로 가정)

    내가 윈도우 7을 사용하여, 비주얼 스튜디오 버전 15.3.3

    이 내 코드입니다 :

    #include <SFML/Graphics.hpp> 
    #include <time.h> 
    #include <iostream> 
    
    int main() { 
    
        sf::RenderWindow window(sf::VideoMode(437, 437), "MattseChess!"); 
    
        sf::Texture t1; 
        if (!t1.loadFromFile("C:/Users/Mattse/source/repos/Chess/Chess/images/figures.png")) {  
         std::cout << "Error loading texture" << std::endl;   
        } 
    
        return 0; 
    } 
    

    내가 시도하는 것을 더 이상 아이디어가 없다, 나는 당신이 날 도울 수 있기를 바랍니다. 미리 감사드립니다!

  • +0

    해당 파일에 ifstream을 열 수 있습니까? 'loadFromFile' 메쏘드가 실패 할 때 출력되는 메시지는 무엇입니까? ? ''release 모드에서 작동 시키려고합니다''모든 라이브러리를 링크하지 않고 ....- d.lib 끝나는 라이브러리 만 ...'... 디버그 빌드의 경우 디버그 라이브러리를 링크해야합니다 (예 : ,'-d.lib'로 끝나는 것).디버그/릴리스 빌드에 올바른 라이브러리가 링크되어 있습니까? – HatsuPointerKun

    답변

    0

    항상 상대 경로 ("images/figures.png")로 파일을 열어야합니다. 그것은 실행 파일에서 상대적입니다.

    그리고 그것은 SFML 어떤 이유로로드 할 수있는 이미지에서 오지 않는다 있는지 확인하기 위해 다른 PNG 이미지 확인 (예를 들어 인터 레이싱 같은 다른 옵션을 재수출하는 김프를 시도)

    0

    가 문제 해결, 사실 링커 -> 입력 설정에서 하나의 라이브러리를 삭제하는 것을 잊었습니다. 나는 -d로 끝나는 것들을 가지고있다. 심지어는 -d가없는 것들까지도 삭제된다. 링크 된 라이브러리의

    목록 :

    sfml-audio-d.lib 
    sfml-graphics-d.lib 
    sfml-main-d.lib 
    sfml-network-d.lib 
    sfml-network-s-d.lib 
    sfml-system-d.lib 
    sfml-system-s-d.lib 
    sfml-window-d.lib 
    sfml-window-s-d.lib 
    

    여러분의 도움에 감사드립니다!

    +0

    이것이 문제의 해결 방법이라면 질문에 답변으로 표시하십시오. – alseether

    0

    당신은 Windows 시스템에있는 것 같습니다 (C:\Users\ 부분에서).

    윈도우 동안해야 지원 슬래시 경로 구분 기호로, Windows의 공식 경로 분리는 백 슬래시입니다. C++에서 이스케이프해야하므로 전체 경로는 다음과 같습니다.

    "C:\\Users\\Mattse\\source\\repos\\Chess\\Chess\\images\\figures.png"