在Mac OS X Lion上使用SDL编译C ++

时间:2013-05-30 08:18:20

标签: c++ macos compilation compiler-errors sdl

我认为Ubuntu和OS X会有类似的接口,用于编译带有SDL的C / C ++程序,但我没有尝试,或者在Google上查找似乎正在工作。

我找到了Xcode的解决方案,但我没有使用Xcode。我正在从Sublime Text 2编写我的程序,并通过命令行编译,因为我更喜欢它并以更快的速度工作。

长话短说,我每次尝试都收到一系列错误,到目前为止,我已将SDL.framework复制到我的/Library/Frameworks目录中。

这是我最接近实际编译的内容:

[ 674 / 174 / 0 ] $ compcpsdl

Undefined symbols for architecture x86_64:
  "_SDL_main", referenced from:
      -[SDLMain applicationDidFinishLaunching:] in ccYYA0Ea.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status

终端命令(即compcpsdl)

g++ -I/Library/Frameworks/SDL.framework/Headers main.cpp SDLmain.m -framework SDL -framework Cocoa

具有以下项目结构:

Project-Directory/
--- main.cpp
--- SDLMain.m
--- SDLMain.h

最后,以下源代码:

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

using namespace std;

int main ()
{
  cout << "Hello World!";
  return 0;
}

看起来我正在做所有事情,但似乎没有任何工作。

任何想法的人?

1 个答案:

答案 0 :(得分:3)

我认为SDL有时会对主要功能有点奇怪,它假设主功能是以一种方式定义的。请注意,我已将int argcchar** argv添加到主函数的定义中。

尝试:

int main (int argc, char** argv)
{
  cout << "Hello World!";
  return 0;
}

我也曾遇到过这个问题而且非常神秘。 有关详细信息,请参阅此stackoverflow问题:Why SDL defines main macro?