我在我的 xcode 项目中使用 SDL 框架时遇到问题,我的主要(目前项目中的所有内容)目前看起来像这样:
#include <SDL/SDL.h>
#include <iostream>
int main(int argc, const char * argv[])
{
// insert code here...
std::cout << "Hello, World!\n";
return 0;
}
我在构建时收到的错误是:
Undefined symbols for architecture x86_64: "_main", referenced from: start in crt1.10.6.o (maybe you meant: __Z8SDL_mainiPPKc) ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
它不会给我关于未找到框架的错误。我在 Stackoverflow 上四处寻找这个问题,我确实找到了一个人,他的框架在他们的操作系统上的错误位置。但是我已经尝试了所有地方(/library/frameworks &&/~username~/library/frameworks &&/system/library/frameworks),仍然没有运气。
附加信息: 但是,在互联网上进行一些搜索后,我确实注意到官方网站 http://www.libsdl.org/download-1.2.php 没有开发库的 OSX 版本。虽然许多关于如何在 OSX 上使用 SDL 的教程都说这些是必需的。
此外,我通过 Xcode 本身添加我的库,而不是通过拖放。 Xcode 似乎能识别它。
如果有人能提供帮助,将不胜感激,为这个错误而疯狂。
更新:
仍然不走运,我已按照以下解决方案提供的每个步骤进行操作。也许这张截图有帮助。
main() 函数已更正,但没有帮助。我尝试更改头文件的路径,我在这个上迷路了。有没有人可能有任何替代方案来在 xcode 中构建它?
更新 2:
这个建议奏效了,但是现在它给了我这个警告,不允许我运行应用程序。
已修复!我删除了build设置中的路径。奇怪的是,无论哪种方式,我仍然不知道出了什么问题。非常感谢您的帮助!让我开心!
最佳答案
我看到三个可能的问题。第一个问题是如何在代码中包含 SDL.h。您应该使用以下代码包含 SDL.h:
#include "SDL.h"
第二个可能的问题是您没有将文件 SDLMain.h 和 SDLMain.m 添加到您的项目中。这些文件是在 Mac OS X 上编译 SDL 代码所必需的。这些文件位于 SDL 磁盘镜像上的 devel-lite 文件夹中。
第三个可能的问题是您的项目没有链接到 Cocoa 框架。 SDL 的 Mac 版本使用 Cocoa,因此您的项目中需要 Cocoa 框架。
以下文章将引导您完成 SDL 的 Xcode 4 项目设置:
更新
我注意到您定义 main() 函数的方式可能存在问题。 char 和 * 之间有一个空格,* 和 argv 之间有另一个空格,这可能会导致错误。我的 SDL 代码中的 main() 函数定义如下:
int main(int argc, char *argv[])
关于c++ - 在 XCode 上使用 SDL 框架时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12481229/