Re: [問題] 有關ObjC呼叫其他Class的Method及呼叫C …

看板MacDev作者 (暑假閒閒的大學生~~)時間14年前 (2010/11/15 19:35), 編輯推噓0(004)
留言4則, 1人參與, 最新討論串2/2 (看更多)
我自問自答一下,因為犯了一個很蠢的錯誤XD 首先,method call不到的問題,是因為我原本在大小判斷的地方,我是用 640*480去判斷。原因是我之前用的MacBook內建iSight解析度是640*480 所以我這樣設定。 然而,我上禮拜換了一台別人歸還的MacBook Pro,而MacBook Pro的iSight 解析度是1280*1024,有130畫素的品質,所以因為我的一時不察,沒有去 看解析度是多少,所以鬧成今天的笑話,希望大家下次記得檢查相容性XD 現在,我已經順利call到另一個method,就解決了第一個問題。但是第二個 問題依然還懸在那裡,希望板上先進可以幫幫我。 我在簡單敘述一下我的問題好了。 我有一個格式轉換的程式碼(Pure C),裡面有一個function如下: int image_input(uint8_t * dst_y, uint8_t * dst_u, uint8_t * dst_v, uint32_t width, int height, uint32_t edged_width, uint8_t * src, int src_stride, int csp, int interlaced); 帶有八個參數。 而我在ObjC的Class裡是這樣呼叫的: 我先在主程式裡面寫這樣 NSData *i420Data = [[NSData alloc] initWithData: [mVideoGrabber RGB32toI420:buffer length:(mLength - 54) width:1280 height:1024]]; 之後就會跳入class裡面的下面這個method: - (NSData *)RGB32toI420:(uint8_t *)data length:(NSUInteger)length width:(uint32_t)width_ height:(int)height_ { NSLog(@"%i",length); if (length != (width_ * height_ * 4)) { NSAssert(noErr == (length == (width_ * height_ * 4)), @"Size Error !"); return nil; } else { NSLog(@"%i",sizeof(&data)); NSLog(@"I'm in !"); uint8_t *dataBlock = malloc((width_ * height_ * 4 / 2)); NSLog(@"%p",dataBlock); uint8_t *yPtr = dataBlock ; NSLog(@"%p",yPtr); uint8_t *uPtr = yPtr + width_ * height_; NSLog(@"%p",uPtr); uint8_t *vPtr = uPtr + (width_ / 2) * (height_ / 2); NSLog(@"%p",vPtr); /*就是這個function出問題,執行時不會過 我也都有檢查過他們傳進來,準備傳出去的資料形態 錯誤碼是"EXC_BED_ACCESS",經過zonble大的提醒 我才去檢查參數的形態正不正確,不過現在看似是一致的*/ image_input(yPtr, uPtr, vPtr, width_, height_, width_, data, width_ * 4, XVID_CSP_ABGR | XVID_CSP_VFLIP, 0); /*回傳一個NSData,裡面是轉換完的資料*/ return [NSData dataWithBytes:dataBlock length:(width_ * height_ * 4 /2)]; } } 大致就是這樣,不過現在就是卡在那裡,不知道是不是我的function呼叫 有問題,還是其他我不知道的地方,希望板上的先進能給我一點意見。 感謝!! 補充一下,我在Run的時候,一開始console都會跑出一堆(至少2.3十個)警 告,而且都是一樣的警告: warning: Bad symbol - type is N_SECT but section is 0 不曉得跟上面的Error有沒有關係?或說有人跟我一樣遇到這種警告的嗎? 再次感謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.219.177.46 ※ 編輯: ryanliang 來自: 61.219.177.46 (11/15 19:42)

11/16 09:25, , 1F
昨晚Debug的結果 感覺是沒有呼叫到那個C function 不知
11/16 09:25, 1F

11/16 09:27, , 2F
到是不是那個C的Library沒有建好 所以它叫不到那個函式
11/16 09:27, 2F

11/16 09:29, , 3F
我是用makefile的方式把我原先的C file make成.a的lib檔
11/16 09:29, 3F

11/16 09:29, , 4F
不知道有沒有大大有過類似的經驗 能給我一些指點 謝謝~
11/16 09:29, 4F
文章代碼(AID): #1CuHhp0x (MacDev)
文章代碼(AID): #1CuHhp0x (MacDev)