2013-03-24 2 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: команда компоновщика не выполнена с кодом выхода 1 (используйте -v, чтобы увидеть вызов).

Может ли кто-нибудь сказать мне, что является правильным способом вызова функции?

+0

Отредактировано название, так как оно было чрезвычайно вводило в заблуждение. Кроме того, я бы рекомендовал переименовать свой класс «С» в нечто более наглядное. –

ответ

4

На самом деле вы не реализовали функцию Cmethod в своем классе C. Вам нужно реализовать его с помощью C:: в заголовке функции, например:

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

Спасибо !!! я понял – user2032083