SDL与OSX没有xcode

时间:2014-11-27 16:40:14

标签: c++ macos gcc linker sdl

更新2 编译器使用以下命令找到SDL.H:

g++ \
-I/usr/local/include/SDL2/ -D_GNU_SOURCE=1 -D_THREAD_SAFE \
-L/usr/local/lib -Wl,-framework,Cocoa \
sdltest.cpp 

有人可以解释一下上面的代码是什么吗?!

这是我的新错误,我意识到我不会编译任何其他.cpp而不是我自己的错误,我应该这样做吗?

sdltest.cpp:10:2: error: use of undeclared identifier 'SDL_WM_SetCaption'
    SDL_WM_SetCaption("SDL Test", "SDL Test");
    ^
sdltest.cpp:13:24: error: use of undeclared identifier 'SDL_SetVideoMode'
    SDL_Surface* screen = SDL_SetVideoMode(640, 480, 0, 0);
                          ^
sdltest.cpp:19:20: error: use of undeclared identifier 'SDL_DisplayFormat'
    SDL_Surface* bg = SDL_DisplayFormat(temp);
                      ^
sdltest.cpp:55:3: error: use of undeclared identifier 'SDL_UpdateRect'
            SDL_UpdateRect(screen, 0, 0, 0, 0);

更新结束2

更新1

我现在用

编译
g++ \
-Wall -Wextra -pedantic \
-std=c++11 \
-I/Library/Frameworks/SDL.framework/Versions/A/Headers/-lSDL2 -framework Cocoa \
lesson01.cpp

输出

2 warnings generated.
Undefined symbols for architecture x86_64:
 "_main", referenced from:
 implicit entry/start for main executable
 (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)

END OF UPDATE 1

我刚刚第一次安装SDL(作为框架),我有一些问题要正确链接它!

我用

编译
g++ \
-Wall -Wextra -pedantic \
-std=c++11 \
-I/Library/Frameworks/SDL.framework/Headers -lSDL2 -framework Cocoa \
lesson01.cpp

返回

ld: library not found for -lSDL2
clang: error: linker command failed with exit code 1 (use -v to see invocation)

路径似乎正确,因为

ls /Library/Frameworks/SDL.framework/Headers | grep SDL.h

返回

SDL.h

我的代码:

#include "SDL.h"

int main( int argc, char* args[] )
{
   return 0
}

如果我使用

#include "SDL/SDL.h"

相反,编译器返回

lesson01.cpp:5:10: fatal error: 'SDL/SDL.h' file not found

我该怎么做才能解决这个问题?

它应该是SDL.H还是SDL / SDL.h?

我更喜欢通过终端工作,所以Xcode不是一个选项!

1 个答案:

答案 0 :(得分:0)

这里有太多的混乱,无处可读,但这里有点......

您需要决定使用SDL 1.2还是SDL 2.0。它们是不同的库,并且位于不同的框架中。 SDL_WM_SetCaption等编译错误来自使用SDL 1.2的代码。

还要决定是否使用SDL框架,或者是否链接到lib本身(例如-lSDL)。

包括SDL.h比SDL / SDL.h更便携。您只需确保指定标题搜索路径(使用-I)。