c++ - 在 XCode 上使用 SDL 框架时遇到问题

标签 c++ xcode macos sdl libraries

我在我的 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 似乎能识别它。

如果有人能提供帮助,将不胜感激,为这个错误而疯狂。

更新:

error

仍然不走运,我已按照以下解决方案提供的每个步骤进行操作。也许这张截图有帮助。

main() 函数已更正,但没有帮助。我尝试更改头文件的路径,我在这个上迷路了。有没有人可能有任何替代方案来在 xcode 中构建它?

更新 2:

这个建议奏效了,但是现在它给了我这个警告,不允许我运行应用程序。

enter image description here

已修复!我删除了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 项目设置:

Using SDL with Xcode 4

更新

我注意到您定义 main() 函数的方式可能存在问题。 char 和 * 之间有一个空格,* 和 argv 之间有另一个空格,这可能会导致错误。我的 SDL 代码中的 main() 函数定义如下:

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

关于c++ - 在 XCode 上使用 SDL 框架时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12481229/

相关文章:

objective-c - 在 xcode 中使用 try catch block 在真实设备上显示错误吗?

ios - 如何转换 .pem 到 .pfx?

linux - *nix 配置文件存储约定?

macos - <tab> v. Emacs 中的 TAB

c++ - friend 和模板 C++

c++ - 用于 LM3S8962 的 C++ 程序的链接描述文件使用 Codesourcery lite 工具链取消托管?

ios - 如何在Xcode中从 'first throw call stack'获取信息

c++ - 为什么在单个变量上我需要指定内存地址而在数组上我不需要它?

c++ - 如何确保 CRTP 不提供错误的父类(super class)?

swift - macOS fatal error : Index out of range NSTableView