3

I am having trouble using the SDL framework in my xcode project, my main (all there is in the project at the moment) currently looks like this:

#include <SDL/SDL.h>
#include <iostream>

int main(int argc, const char * argv[])
{
// insert code here...
std::cout << "Hello, World!\n";
return 0;
}

And the error I am receiving when building is:

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

It does not give me an error about the framework not being found. and I have looked around Stackoverflow for this problem and I did find one person who had their framework in the wrong place on their OS. But I have tried all places (/library/frameworks && /~username~/library/frameworks && /system/library/frameworks) and still no luck.

Additional info: I did however notice after some searching on the internet that the official website http://www.libsdl.org/download-1.2.php Does not have a OSX version of the Development library. While many tutorials on how to use SDL on OSX say these are required.

Also I am adding my library via Xcode itself ,not through drag'ndrop. Xcode seems to reckognize it.

Would be much appreciated if anyone could help, going crazy over this error.

UPDATE:

error

Still no luck, I have followed every step provided by solutions here below. perhaps this screenshot is of any help.

The main() function is corrected, but didn't help. I tried changing the path to the header files, im lost on this one. Does anyone perhaps have any alternatives to building this in xcode?

UPDATE2:

The suggestion worked, however now it is giving me this warning, which won't let me run the application.

enter image description here

Fixed! I removed the path in the build settings. Strange how I still don't know what went wrong, either way. thanks a lot for the help! made my day!

4

1 に答える 1

3

3 つの問題が考えられます。最初の問題は、コードに SDL.h を含める方法です。次のコードで SDL.h をインクルードする必要があります。

#include "SDL.h"

考えられる 2 番目の問題は、ファイル SDLMain.h と SDLMain.m をプロジェクトに追加していないことです。これらのファイルは、Mac OS X で SDL コードをコンパイルするために必要です。ファイルは、SDL ディスク イメージの devel-lite フォルダーにあります。

考えられる 3 番目の問題は、プロジェクトが Cocoa フレームワークにリンクしていないことです。SDL の Mac バージョンは Cocoa を使用するため、プロジェクトには Cocoa フレームワークが必要です。

次の記事では、SDL 用の Xcode 4 プロジェクトのセットアップについて説明します。

Xcode 4 で SDL を使用する

アップデート

main() 関数の定義方法に問題がある可能性があることに気付きました。char と * の間にスペースがあり、* と argv の間に別のスペースがあるため、エラーが発生する可能性があります。私の SDL コードの main() 関数は、次のように定義されています。

int main(int argc, char *argv[])
于 2012-09-18T18:58:16.567 に答える