Llamando al método C ++ desde el objetivo C

Tengo los siguientes archivos.

foo.h (archivo de encabezado C ++)
foo.mm (archivo C ++)
test_viewcontroller.h (archivo de encabezado del objetivo c)
test_viewcontroller.m (archivo Objective c)

He declarado un método donothing () en foo.h y lo he definido en foo.mm. Digamos que es

doble donothing (doble a) {return a; }

Ahora, trato de llamar a esta función en test_viewcontroller.m

doble var = nada (somevar);

Recibo un error de enlace que dice "no se pueden encontrar los símbolos" _donothing () en test_viewcontroller.o
collect2: ld devolvió 1 estado de salida

¿Alguien puede señalarme qué está mal?

Déjame 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 ejemplo de código. Estoy diciendo que necesito ajustar solo el método test () en ifdef. No entiendo qué diferencia puede hacer. ¿Puede explicarlo?

Respuestas a la pregunta(1)

Su respuesta a la pregunta