Tengo los siguientes archivos.Llamando al método C++ desde el Objetivo C
foo.h (archivo de encabezado de C++)
foo.mm (C++ archivo)
test_viewcontroller.h (archivo de cabecera objetivo c)
test_viewcontroller.m (archivo Objetivo c)
me han declarado DoNothing método() en foo.h y definido en foo.mm.Lets dicen que es
doble DoNothing (doble a) { volver a; }
Ahora, trato de llamar a esta función en test_viewcontroller.m
doble var = DoNothing (somevar);
me sale error de vinculador que dice "no puede encontrar símbolos" _donothing() en test_viewcontroller.o
collect2: ld devolvió el código de salida 1
Puede alguien por favor me punto en cuanto a lo que está mal?
Voy a ser preciso:
#ifdef __cplusplus
extern "C"
{
char UTMLetterDesignator(double Lat);
NSString * LLtoUTM(double Lat,double Long,double UTMNorthing, double UTMEasting);
double test(double a);
}
#endif
@Carl
He incluido mi código sample.Are diciendo que necesito para envolver sólo el método test() en ifdef.I no entiendo qué diferencia puede hacer. ¿Puedes explicar?
I intenté agregar extern "c" .pero recibo un nuevo error - "ID esperado o, dor '(' antes de una constante cadena" – Janani
@whocares, es necesario añadir el' extern 'C' 'sólo para C++ - es decir, envolviéndolo en un bloque' #ifdef __cplusplus'. –
@Carl - ¡Muchas gracias por la respuesta! ¡El error del enlazador ya no está! pero recibí una nueva advertencia en "test_viewcontroller.m" - declaración implícita de la función "donothing()". Creo que esto sucede solo cuando no he incluido el archivo de cabecera que tiene declaración de función. Pero tengo un foo.h importado en "test_viewcontroller.m". ¿Puedes decirme qué sucede? – Janani