7

我正在尝试使用一个库,特别是 Xcode 4.2.1 中的 SOIL(简单 OpenGL 图像库)。在 Build Phases -> Link Library with Libraries 下,我添加了 SOIL zip 存档附带的所有 .h 和 .c 文件。

当我构建项目时,对于添加的每个 .h 和 .c 文件,我都会收到以下错误消息:

警告:跳过文件“/Users/saw/XcodeProjects/Assignment01 copy/Assignment01/image_DXT.c”(在框架和库构建阶段出现意外的文件类型“sourcecode.cc”)

和链接器错误:

“_SOIL_load_OGL_texture”,引用自: init() in main.o Symbol(s) not found for architecture x86_64 Clang: error: linker command failed with exit code 1 (使用 -v 查看调用)

4

2 回答 2

9

.h 和 .c 文件不是库。将 .c 文件添加到编译阶段,只#import在需要的地方添加 .h 文件。

为了验证链接,我做了以下事情:

  • 创建一个新的 Mac Cocoa 应用程序。
  • 从 SOILsrc 文件夹中添加 10 个文件:SOIL.c、image_DXT.h、stbi_DDS_aug.h、SOIL.h、image_helper.c、stb_image_aug.c、stbi_DDS_aug_c.h、image_DXT.c、image_helper.h 和 stb_image_aug.h。
  • 告诉 Xcode 将它们复制到我的项目中。
  • applicationDidFinishLaunching:在我的应用程序委托的方法 中添加一行: SOIL_load_OGL_texture( "img_test.png", SOIL_LOAD_AUTO, SOIL_CREATE_NEW_ID, 0 );.
  • 构建运行目标。

尽管有各种关于数据转换的编译器警告,但这些步骤会生成没有链接器错误的可执行文件。

于 2012-12-15T15:50:29.743 回答
1

尝试在“其他链接器标志”中将 -framework 添加到您的框架名称中,例如:

-framework SOIL
于 2012-12-16T21:35:49.063 回答