2013-03-24 135 views
0

我有C++文件:C.cpp和Ch如何調用C++方法在Objective-C

//C.h 
#ifndef __ThreeMoreOpenCV__SourceC__ 
#define __ThreeMoreOpenCV__SourceC__ 

#include <iostream> 

class C 
{ 
public: 
    static void Cmethod(); 
}; 
#endif 

//C.cpp 
#include "SourceC.h" 

using namespace std; 

void Cmethod() 
{ 
    printf("ff"); 

} 

我也有Wrapper.h/.mm

//Wrapper.h 
#import <Foundation/Foundation.h> 

@interface CVWrapper : NSObject 
+(void)returnCmethod; 
@end 

//Wrapper.mm 
#import "Wrapper.h" 
#import "C.h" 

@implementation CVWrapper 

+(void)returnCmethod 
{ 
    C::Cmethod(); 
} 

@end 

我不知道但我發現了一個錯誤,如:

「C :: Cmethod()」,從引用: + [包裝returnCmethod]在Wrapper.o LD:符號(多個)未找到i386硬件架構 鐺:埃羅r:linker命令失敗,退出代碼1(使用-v查看調用)。

有人可以告訴我什麼是調用函數的正確方法嗎?

+0

編輯標題,因爲這是極其錯誤的。另外,我建議重新命名你的'C'類來描述更具描述性的內容。 – 2013-03-24 20:11:00

回答

4

您尚未在您的C類中實際實現Cmethod函數。你需要在函數頭部與C::實現它,如:

void C::Cmethod() 
{ 
    printf("ff"); 
} 
+0

謝謝!我知道了 – user2032083 2013-03-25 07:01:53