1

今朝、SDL を使用するために Sublime Text と Terminal で C++ を少し学習した後、OSX Lion と Xcode をインストールしましたが、Terminal でコンパイルしようとすると問題が発生します。これが私のコードです。

#include "SDL/SDL.h"

int main(int argc, char* args[])
{
    //Start SDL
    SDL_Init(SDL_INIT_EVERYTHING);

    //Quit SDL
    SDL_Quit();

    return 0;
}

SDL.framework、SDL_mixer.framework、および devel-lite をライブラリ フォルダに入れ、Macports を使用して SDL を取得しましたが、それが機能しなかった場合、後者は役に立ちませんでした。

「g++ sdltest.cpp -o sdltest -lSDL」を使用すると、「ld: -lSDLcollect2 のライブラリが見つかりません: ld が 1 つの終了ステータスを返しました」という結果が得られます。これを機能させる方法はありますか?

また、興味深いことに、ハードドライブをフォーマットし、OSX Lion と XCode を再インストールした後に SDL の「クリーン インストール」を行う場合 (近々行うことを考えています)、最善の方法は何でしょうか? 私が見つけたすべてのガイドでエラーが発生しました (それは間違いなく私の問題です。理解するのが最も簡単なものを見つける必要があるだけです)。テキストエディタとターミナル。ありがとうございました。

4

2 に答える 2

3

含まれている sdl-config (または SDL2 の場合は sdl2-config) ファイルを使用して、g++ へのインクルードおよびライブラリ パラメーターを生成する必要があります。たとえば、OSX で Homebrew 経由で SDL2 を使用しているため、次のようになります。

g++ sdltest.cpp -o sdltest `sdl2-config --cflags` `sdl2-config --lib`

に変換して実行します:

g++ sdltest.cpp -o sdltest -I/usr/local/include/SDL2 -D_THREAD_SAFE -L/usr/local/lib -lSDL2

sdl-configを使用したSDL 1.xでも同じように機能するはずです。さらに、「--static-libs」オプションがあり、私の場合は次のようになります。

-L/usr/local/lib -lSDL2 -lm -liconv -Wl,-framework,OpenGL -Wl,-framework,ForceFeedback -lobjc -Wl,-framework,Cocoa -Wl,-framework,Carbon -Wl,-framework,IOKit -Wl,-framework,CoreAudio -Wl,-framework,AudioToolbox -Wl,-framework,AudioUnit
于 2014-05-25T04:20:35.283 に答える
1

を使用してlibSDLをリンクするようにg++に-lSDL指示していますが、どこを見ればよいかは指示していません。SDLパスをコマンドラインに追加します-L/Users/snarehanger/Library/SDL


申し訳ありませんが、これが明確でないことに気づかなかったので、Joachimのコメントを回答に組み込んでいます。

  • コマンドラインオプションでは大文字と小文字が区別されます
  • オプション-l(小文字のell)は、ライブラリの名前を示します。ファイル名も検索パスも指定しません。
    • たとえば、コマンドラインで指定された検索パスまたはgccにコンパイルされたデフォルトのいずれかに-lSDL一致する可能性があります。libSDL.alibSDL.so
    • gccマニュアル:リンクオプション
  • オプション-L(大文字のell)は、で要求されたライブラリを検索するときに使用される検索パスにディレクトリを追加します。-l
于 2012-07-19T23:18:08.993 に答える