2011-05-27 49 views
4

我非常沮丧!我正努力适应SDL今晚,但我试图通过XCode4连接到它的砖墙!这就是我所做的。我下载了SDL框架运行时库和development xtras的v1.2.14。我遵循了所有的方向(拖放/ Library/Frameworks中的SDL.framework),直到我意识到模板在XC4中无法像XC3.x一样工作。我踢了模板,并尝试将框架添加到香草可可应用程序。 (从内置的应用程序模板创建。)我添加了SDLMain .h .m和.nib文件并尝试构建。马上我得到一个错误,说它找不到“SDL.h”。我手动调整了我所有配置的标题搜索路径设置,尽管我认为如果我直接引用框架,这不应该是必需的。我用这种方式解决了缺少的头文件,但开始碰到链接器错误。无法链接到XCode4中的SDL!

"_SDL_main", referenced from: 
     -[SDLMain applicationDidFinishLaunching:] in SDLMain.o 

我已经尝试了满足我的链接器和编译器的所有不同的演绎。我已经将框架移动到〜/ Library/Frameworks下的我的用户文件夹中,我已经玩过<>和“”导入语法。我开始了一个全新的项目,并重复了一切。我迷路了!有人可以帮忙吗?

+0

你的'main()'函数有两个参数吗? – genpfault 2011-05-27 18:35:43

+1

是的它︰int main(int argc,char ** argv) – Cliff 2011-05-29 00:49:42

+0

得到了同样的问题:S – Emil 2011-07-05 20:21:11

回答

2

我不知道你是否还在寻找,但我认为这是因为SDL正在寻找一个C符号名称,但是你的主要是在C++文件中声明的。

你要做的:

extern "C" int main(int argc, char *argv[]) 
{ 
    ... 
} 

它在SDL_main.h “记录”:

/** The application's main() function must be called with C linkage, 
* and should be declared like this: 
*  @code 
*  #ifdef __cplusplus 
*  extern "C" 
*  #endif 
* int main(int argc, char *argv[]) 
* { 
* } 
*  @endcode 
*/ 
+0

谢谢,完全合理,尽管我还没有回去再试一次。谢谢你的提示! :) – Cliff 2011-12-16 18:41:28

5

我知道这是旧的,但如果有人现在碰到这个绊倒。

的XCode默认与申报

int main(int argc, const char * argv[]) 

创建的主要功能虽然SDL正在寻找一个函数声明

int main(int argc, char * argv[]) 

注意缺少的char * argv的[]常量的。看起来,当SDL正在寻找一个char * [] Xcode给它一个const char * [],并且它导致它无法找到该符号。

我真的希望SDL停止重命名我的功能!必须有一个更好的解决方案,但是,嘿,这会做现在。