【问题标题】:SDL with OSX without xcodeSDL 与 OSX 没有 xcode
【发布时间】:2015-01-26 07:54:42
【问题描述】:

更新 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 不是一个选项!

【问题讨论】:

    标签: c++ macos gcc linker sdl


    【解决方案1】:

    这里有点混乱,无法一一回顾,但这里有一些东西......

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

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

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

    【讨论】:

    • 第三段看不懂!我已经安装了一个框架!这是否意味着我不必链接到图书馆?
    • 链接的区别只是你使用的命令。对于普通的库链接(例如链接到 libSDL.a),请使用链接器的 -lSDL 参数。如果您已经安装了框架,请改用-framework SDL,就像您为 Cocoa 框架所做的那样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-25
    • 2016-01-18
    • 2012-09-13
    • 1970-01-01
    • 2012-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多