SDL with OSX without xcode



>UPDATE 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)

更新 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 不是一种选择!

这里有点太乱了,无法回顾所有内容,但这里有一些东西......

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

还要决定是使用 SDL 框架还是链接到库本身(例如 -lSDL)。

包括 SDL.h 比 SDL/SDL.h 更具可移植性。 您只需要确保指定标题搜索路径(使用 -I)。

最新更新