gpt4 book ai didi

macos - 使用 Xcode 4 在 Mac OS X Lion 上设置 SDL

转载 作者:行者123 更新时间:2023-12-04 11:58:27 24 4
gpt4 key购买 nike

我一直试图让一个 super 简单的 SDL 程序工作。我正在使用 Mac OS X Lion。我让 SDL 在 Snow Leopard 中工作,但它似乎不想在 Lion 中工作。到目前为止,我有这个:

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

using namespace std;

/*
#ifdef main
# undef main
#endif
*/

int main( int argc, char* args[] )
{
SDL_Surface* hello = NULL;
SDL_Surface* screen = NULL;
SDL_Init( SDL_INIT_EVERYTHING );
screen = SDL_SetVideoMode( 640, 480, 32, SDL_SWSURFACE );
hello = SDL_LoadBMP( "hello.bmp" );
SDL_BlitSurface( hello, NULL, screen, NULL );
SDL_Flip( screen );
SDL_Delay( 2000 );
SDL_FreeSurface( hello );
SDL_Quit();

return 0;
}

当我尝试编译这段代码(在 Xcode 4.1 中)时,它给了我这个错误:
Undefined symbols for architecture x86_64:
"_main", referenced from:
start in crt1.10.6.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)

如果我取消注释我当前评论的 #ifdef 内容,程序会编译,但随后会在 SDL_SetVideoMode 行上收到 SIGABRT。我刚刚在另一个程序中看到的评论内容,我不确定我是否应该拥有它。

我应该如何让这个工作?

最佳答案

SDL 头文件重新定义 main用宏。这是在 SDL_main.h 中:

#define main    SDL_main

但这很好。 SDL 提供自己的 main()然后调用您的版本的函数。因此,摆脱那些定义,它们使情况变得更糟,而不是更好。

如果您的项目是基于 Cocoa 的,那么您可能错过了包含 SDLmain.m在你的项目中。这提供了 cocoa 友好的 main()功能。如果您的项目是 native C++,那么我的猜测是您没有在项目中包含所有 SDL 库,因此链接器看不到 SDL 自己的 main() .

关于macos - 使用 Xcode 4 在 Mac OS X Lion 上设置 SDL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8221151/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com