2017-12-09 4 views
0

SFML 2.0でチェスボードのグラフィック表現を取得しようとしています。 問題は、単にテクスチャを読み込むことができないということです。コマンドloadFromFileは機能しません。理由はわかりません。私はすでに約2時間、またここでstackoverflowのgoogledしかし、私は解決策を見つけることができませんでした。含まれており、図書館、.dllファイル年代とUnicodeからマルチバイトにテキスト形式を変更する SFML loadFromFileコマンドでの問題

  • を.LIBSのすべての依存関係を設定する

    • :私は今やった

      。 LoadFile-を使用して、イメージファイルのパス全体を使用して作業フォルダ(Visual Studioが、私はこのプロジェクトでそれらをリンクしていてもDLLを見つけるcouldntのことにエラーが発生した)

    • への.dllのコピー
    • 2つの引数を持つコマンド(たとえ2番目の引数はオプションですが)
    • MDdからMDへのランタイムライブラリの変更(リリースモードで動作させようとしています)
    • すべてのライブラリはリンクされていませんが、 ...- d.libの終了(別のstackoverflow-threadで想定される)

    私はこれが私のコードでのWindows 7、Visual Studioのバージョン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 modeで動かそうとする ''すべてのライブラリをリンクするのではなく、....- d.libが終わるもののみ '' ...デバッグビルドでは、デバッグライブラリをリンクする必要があります。 、 '-d.lib'で終わるもの)。デバッグ/リリースビルドに正しいライブラリがリンクされていますか? – HatsuPointerKun

    答えて

    0

    ファイルは常に相対パス("images/figures.png")で開いてください。実行ファイルからの相対パスです。

    そして、それはSFMLは、いかなる理由でも読み込むことができないというイメージから来ていないかどうかを確認するために、他のPNG画像で確認し(例えばインターレースなどの異なるオプションでそれを再輸出するためにGIMPを試してみてください)

    0

    は、問題を修正、リンカ - >入力設定で1つのライブラリを削除するのを忘れてしまったのは事実です。私は現在、-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 サポートがパス区切り文字としてスラッシュ必要がありますが、Windowsの公式パスセパレータはバックスラッシュです。それはC++でエスケープする必要がありますので、完全なパスは次のようになります:

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