2012-05-17 89 views
7

我想在Xcode 4.2.1中使用一個庫,特別是SOIL(簡單的OpenGL圖像庫)。在構建階段 - >將庫與庫鏈接下添加SOIL zip歸檔附帶的所有.h和.c文件。在Xcode 4.2.1項目中包含標題

當我生成項目,我得到增加,每h和.c文件以下錯誤信息:

warning: skipping file '/Users/saw/XcodeProjects/Assignment01 copy/Assignment01/image_DXT.c' (unexpected file type 'sourcecode.c.c' in Frameworks & Libraries build phase)

和鏈接錯誤:

"_SOIL_load_OGL_texture", referenced from: Init() in main.o Symbol(s) not found for architecture x86_64 Clang: error: linker command failed with exit code 1 (use -v to see invocation)

回答

9

h和.C文件不是庫。將.c文件添加到編譯階段,並在需要的地方添加.h文件。

爲了驗證鏈接我也做了以下內容:

  • 創建一個新的Mac Cocoa應用程序。
  • 從土壤src 文件夾中添加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);
  • 建立運行目標。

儘管存在各種有關數據轉換的編譯器警告,但這些步驟會生成一個沒有鏈接器錯誤的可執行文件。

+0

我已經不像@Terribad似乎正確的方式已經添加的文件。錯誤仍然存​​在 –

+0

我認爲你的意思是鏈接器錯誤,而不是「跳過文件」消息?你能找到正在構建的文件之一中定義的'SOIL_load_OGL_texture'(例如SOIL.c)嗎? –

+0

+1像魅力一樣工作。謝謝Phillip。 – welbornio

1

嘗試在「其他鏈接器標記」,如添加-framework你的框架的名字:

-framework SOIL