2009-09-09 77 views
4

在我的iPhone應用程序中,我將鏈接到包含目標c文件和圖像的靜態庫。是否有可能從靜態庫中加載圖像?我曾嘗試如何加載存儲在靜態庫中的圖像

[UIImage imageNamed:[[NSBundle mainBundle] pathForResource:@"imageName" ofType:@"png"]]; 

但顯然圖像不是主束,它在靜態庫和一個NSBundle類似乎只是爲了提供訪問主束和與已知路徑捆綁。有沒有辦法從iPhone上的靜態庫加載圖像?

+0

什麼?靜態庫如何包含圖像?這對我來說沒有意義。靜態庫應該是鏈接器將包含在可執行文件中的代碼。 – Chuck 2009-09-09 21:03:30

回答

1

目前尚不清楚「圖像在靜態庫中」是什麼意思。靜態庫是純文件(帶.a擴展名)幷包含已歸檔的對象文件。另一方面,捆綁包是目錄層次結構(包含可執行文件和其他資源)。

如果您鏈接一個靜態庫,庫中的代碼將直接包含到您的可執行文件中。沒有文件被複制到應用程序包,因此無法複製圖像。

如果您的圖像文件包含靜態庫,您可以簡單地將它複製到應用程序捆綁包中,方法是在Xcode中向目標添加複製文件構建階段。

+0

謝謝!我是xcode的新手,我需要一個複製文件構建階段。這解決了它。 – zaccox 2009-09-10 13:47:19

12

最簡單的方法是將圖像存儲在一個內嵌字符數組:

const char imageData[] = { 0x00, 0x01, 0xFF, ... }; 

後來當你需要它:

UIImage *image = [UIImage imageWithData:[NSData dataWithBytesNoCopy:imageData length:sizeof(imageData) freeWhenDone:NO]]; 

你將不得不轉換圖像的二進制數據(保存爲PNG或JPEG)手動添加到字符數組(或編寫腳本)

0

您是否在靜態庫複製文件構建階段使用了絕對路徑並將其指向o客戶端應用程序?我嘗試了這樣的東西,圖像仍然無法訪問。

相關問題