【问题标题】:Having trouble using SDL framework on XCode在 XCode 上使用 SDL 框架时遇到问题
【发布时间】:2012-09-10 23:11:16
【问题描述】:

我在我的 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;
}

我在构建时收到的错误是:

架构 x86_64 的未定义符号: “_main”,引用自: 从crt1.10.6.o开始 (也许你的意思是:__Z8SDL_mainiPPKc) ld:未找到架构 x86_64 的符号 clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

它不会给我一个关于找不到框架的错误。我在 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:

该建议有效,但现在它给了我这个警告,它不会让我运行应用程序。

已修复!我删除了构建设置中的路径。奇怪的是,我仍然不知道出了什么问题,无论哪种方式。非常感谢您的帮助!让我开心!

【问题讨论】:

  • 你在链接SDLmain吗?
  • 你能在命令行上运行sdl-config --libs吗?
  • @jrok 不,我不是,这对于我在网上找到的大多数教程来说似乎都没有必要,但是我已经尝试过了,但我仍然得到同样的错误。
  • @KerrekSB 我尝试在新的命令行上输入它,它说:找不到命令,我必须在应用程序上运行它吗?
  • @Sam:不,这不重要。它只会为我们提供有关 SDL 库位置的线索。你有没有在编译器命令中添加-lSDL

标签: c++ xcode macos sdl libraries


【解决方案1】:

我看到三个可能的问题。第一个问题是如何在代码中包含 SDL.h。您应该在 SDL.h 中包含以下代码:

#include "SDL.h"

第二个可能的问题是您没有将文件 SDLMain.h 和 SDLMain.m 添加到您的项目中。这些文件是在 Mac OS X 上编译 SDL 代码所必需的。这些文件位于 SDL 磁盘映像的 devel-lite 文件夹中。

第三个可能的问题是您的项目没有链接到 Cocoa 框架。 Mac 版本的 SDL 使用 Cocoa,因此您需要在项目中使用 Cocoa 框架。

以下文章将引导您为 SDL 设置 Xcode 4 项目:

Using SDL with Xcode 4

更新

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

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

【讨论】:

  • 感谢您的回复,但是这是我遵循的将 SDL 包含到我的项目中的教程(其中之一)。它给了我同样的错误 :( 也包含部分给了我一个错误,它找不到 SDL,“SDL/sdl.h”没有错误。我觉得包含框架不是错误。虽然我可能弄错了
  • 确保 SDL 框架是目标的 Link Binary with Libraries 构建阶段的一部分。您可能还需要将 SDL 框架的路径添加到框架搜索路径构建设置中。
  • 它是链接的,路径也没有错误。我发布了错误的屏幕截图,也许它可以向您展示更多信息。
  • 错误消息说您有一个重复的符号 main。这意味着 Xcode 在您的项目中发现了两个 main() 函数,而您只能拥有一个。在你的项目中搜索 main ,看看会出现什么。
  • 感谢您的回复!如果我在我的项目中搜索“main”,它只显示一次,奇怪的是,如果我添加或删除这一行“#import”sdl/sdl.h“它可以工作或不工作。可以在另一个 main SDL 工具包?似乎很奇怪,因为如果我删除项目中唯一的 main 应用程序仍然无法构建。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-30
  • 2014-06-12
  • 1970-01-01
  • 1970-01-01
  • 2016-07-04
  • 1970-01-01
相关资源
最近更新 更多