2013-03-24 134 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