2011-08-15 8 views
10

私はゲームをglutからsdlに移行しようとしていました。SDLヘッダーを含めるだけでリンカーエラーが発生する

これは完璧に機能していますが、私はいくつかのsdl機能を使いたいと思っていました。

は、だから私は、私は、ビルドフェーズコンパイルされるプログラムをクリックし、ターゲットヘッダの下で、私のプロジェクトのプロパティに行くライブラリとバイナリリンク、SDL.frameworkを追加

私は、OpenGLのために行っているとまったく同じ.frameworkとGLUT.framework

しかし、私が追加したとき:#include <SDL/SDL.h>私が構築しようとすると、それはリンカエラーを思い付く:単にグーグル

Undefined symbols for architecture x86_64: 
    "_main", referenced from: 
     __start in crt1.o 
    (maybe you meant: _SDL_main) 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

は公正少数の結果につながりませんが、本当の説明。

答えて

8

SDLはマクロを使用してmain(..)の名前を変更し、独自に指定する必要があります。通常はSDLmain.mに実装されています。 SDL.frameworkと一緒に提供する必要があります。

ここからフレームワークをダウンロードするときhttp://www.libsdl.org/download-1.2.phpdevel-liteフォルダのReadMeDevLite.txtをお読みください。アーキテクチャx86_64のため

未定義のシンボル:
"_main"、から参照:
暗黙のエントリー/メインの実行のために開始

別の説明が http://www.meandmark.com/sdlopenglpart2.html

+0

私はMacベースの開発ではなく、.mファイルが何であるかわかりません。このようなことをどのように並べ替えるのか説明できますか? – Blam

+2

@Blam、A .mファイルはObjective-Cファイルです。 Mac版のSDLはObjective-Cで書かれています。 SDLMain.hとSDLMain.mファイルをプロジェクトに追加します。 Mac OS XでSDLアプリケーションをコンパイルするのに必要なグルーコードが含まれています。 –

2

私はエラーを取得するときにことを発見しました
(おそらく:_SDL_main)

私はプロジェクト - >ビルド段階 - >ソースをコンパイルすることを忘れてしまいました。 SDLMain.mをリストに追加します。これはすぐに私の問題を解決しました。

関連する問題