如何在Objective-C中调用C ++方法

时间:2013-03-24 19:45:47

标签: c++ objective-c objective-c++

我有C ++文件:C.cpp和C.h

//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()”,引自:           Wrapper.o中的+ [Wrapper returnCmethod]     ld:找不到架构i386的符号     clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)。

有谁能告诉我调用函数的正确方法是什么?

1 个答案:

答案 0 :(得分:4)

您实际上没有在C类中实现Cmethod函数。您需要在函数头中使用C::实现它,例如:

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