在我的iPhone應用程序中,我將鏈接到包含目標c文件和圖像的靜態庫。是否有可能從靜態庫中加載圖像?我曾嘗試如何加載存儲在靜態庫中的圖像
[UIImage imageNamed:[[NSBundle mainBundle] pathForResource:@"imageName" ofType:@"png"]];
但顯然圖像不是主束,它在靜態庫和一個NSBundle類似乎只是爲了提供訪問主束和與已知路徑捆綁。有沒有辦法從iPhone上的靜態庫加載圖像?
在我的iPhone應用程序中,我將鏈接到包含目標c文件和圖像的靜態庫。是否有可能從靜態庫中加載圖像?我曾嘗試如何加載存儲在靜態庫中的圖像
[UIImage imageNamed:[[NSBundle mainBundle] pathForResource:@"imageName" ofType:@"png"]];
但顯然圖像不是主束,它在靜態庫和一個NSBundle類似乎只是爲了提供訪問主束和與已知路徑捆綁。有沒有辦法從iPhone上的靜態庫加載圖像?
目前尚不清楚「圖像在靜態庫中」是什麼意思。靜態庫是純文件(帶.a擴展名)幷包含已歸檔的對象文件。另一方面,捆綁包是目錄層次結構(包含可執行文件和其他資源)。
如果您鏈接一個靜態庫,庫中的代碼將直接包含到您的可執行文件中。沒有文件被複制到應用程序包,因此無法複製圖像。
如果您的圖像文件包含靜態庫,您可以簡單地將它複製到應用程序捆綁包中,方法是在Xcode中向目標添加複製文件構建階段。
謝謝!我是xcode的新手,我需要一個複製文件構建階段。這解決了它。 – zaccox 2009-09-10 13:47:19
最簡單的方法是將圖像存儲在一個內嵌字符數組:
const char imageData[] = { 0x00, 0x01, 0xFF, ... };
後來當你需要它:
後UIImage *image = [UIImage imageWithData:[NSData dataWithBytesNoCopy:imageData length:sizeof(imageData) freeWhenDone:NO]];
你將不得不轉換圖像的二進制數據(保存爲PNG或JPEG)手動添加到字符數組(或編寫腳本)
您是否在靜態庫複製文件構建階段使用了絕對路徑並將其指向o客戶端應用程序?我嘗試了這樣的東西,圖像仍然無法訪問。
什麼?靜態庫如何包含圖像?這對我來說沒有意義。靜態庫應該是鏈接器將包含在可執行文件中的代碼。 – Chuck 2009-09-09 21:03:30