ld: 找不到符合 x86_64 架构的符号(Xcode 4)// opengles.o

12

我正在创建一款带有外部库的Xcode命令行工具应用程序,但遇到了一些错误。

我尝试解决这些错误的方法:

  • 使用不同的编译器进行构建
  • 删除GLES文件夹并重新添加
  • 在32位和64位上进行构建

关于opengles.cpp文件,我是否忽略了什么?

如果您有任何想法,请告诉我下一步应该怎么做。下面是有关项目和错误的所有信息。如果您需要更多信息,我很乐意为您提供协助。此外,如果您知道如何在Xcode 4中编译opnni中的NiUsertracker示例,那也将是解决此问题的一个很好的帮助。

错误信息:

enter image description here

问题可能与这些文件有关:

enter image description here

项目设置信息(它是一个命令行工具,而不是应用程序):

enter image description here

构建时输出的截图:

enter image description here

构建设置:

enter image description here

3个回答

7
通常当我遇到这样的错误,是因为我忘记链接库了。你拥有的文件夹只包含头文件,请尝试寻找OpenGL ES的框架。(我想Xcode自带GLES框架,可以试着搜索一下。)

1
这个策略解决了我在看到这些错误时的问题。谢谢! - Jay Taylor

2

在终端(Terminal.app)中手动运行命令,以确切地找出问题所在:

[ 11:56 jon@hozbox ~ ]$ Ld /Users/olivierjanssens/Library/Developer/Xcode/DerivedData/scene-anlidnesspxdbhblrrwqfwybphqj/Build/Products/Debug/scene normal x86_64
[ 11:56 jon@hozbox ~ ]$ cd /Users/olivierjanssens/Documents/xcode/scene
[ 11:56 jon@hozbox ~ ]$ setenv MACOSX_DEPLOYMENT_TARGET 10.7
[ 11:56 jon@hozbox ~ ]$ /Developer/usr/bin/llvm-g++-4.2 -arch x86_64 -isysroot /Developer/SDKs/MacOSX10.7.sdk -L/Users/olivierjanssens/Library/Developer/Xcode/DerivedData/scene-anlidnesspxdbhblrrwqfwybphqj/Build/Products/Debug -L/Users/olivierjanssens/Documents/xcode/scene/Libs -F/Users/olivierjanssens/Library/Developer/Xcode/DerivedData/scene-anlidnesspxdbhblrrwqfwybphqj/Build/Products/Debug -filelist /Users/olivierjanssens/Library/Developer/Xcode/DerivedData/scene-anlidnesspxdbhblrrwqfwybphqj/Build/Intermediates/scene.build/Debug/scene.build/Objects-normal/x86_64/scene.LinkFileList -mmacosx-version-min=10.7 /usr/lib/libnimCodecs.dylib /usr/lib/libnimMockNodes.dylib /usr/lib/libnimRecorder.dylib /usr/lib/libOpenNI.dylib /usr/lib/libXnVFeatures.dylib /usr/lib/libXnVHandGenerator.dylib -framework GLUT -framework OpenGL /Users/olivierjanssens/Documents/xcode/scene/Libs/glut64.lib -o

在运行最后一个命令 (/Developer/usr/bin/llvm-g++-4.2) 后,它会显示失败的原因。
如果 setenv MACOSX_DEPLOYMENT_TARGET 10.7 命令失败,请将 setenv 替换为 export,并在 10.7 前加上一个 =,如下所示:
[ 11:56 jon@hozbox ~ ]$ export MACOSX_DEPLOYMENT_TARGET="10.7"

看起来您的构建配置缺少某些设置,可能是应用程序名称(MyApp.app)。请检查一下项目设置窗口中“信息”选项卡中是否漏掉了任何内容(只需单击左侧文件列表中的顶部项目即可)。

来自 llvm-gcc 手册

-o 文件名 指定输出文件为文件名。


您可能需要完全从项目中移除egl框架,然后再将其添加回去。有时候框架在Xcode中出于无缘无故的原因被取消链接。 - chown
似乎您的构建配置缺少某些设置。可能是应用程序名称(MyApp.app)。请检查项目设置窗口中“信息”选项卡中是否有任何遗漏(只需单击左侧文件列表中的顶部项目)。 - chown
我不是在开发一个应用程序,而是一个命令行工具。并且我不能改变它的名称。尽管已经设置了项目名称。 - Olivier_s_j
你能否包含一个屏幕截图或列表,显示目标的构建设置?只需要“基本”视图即可,不需要“全部”。 - chown
似乎您正在构建的架构与glut32/64库存在问题。您的架构构建设置是什么? - chown
显示剩余3条评论

1

移除框架,然后再添加。退出Xcode并重新启动。


这不是一个框架,而是来自另一个项目的文件夹。我按照您说的做了,删除了文件夹,重新添加并重启了Xcode。但我担心没有任何区别。 - Olivier_s_j

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接