C++: Funciones externas C dentro de un espacio de nombres
namespaces linker-errors (1)
Tengo que vincular dos bibliotecas, digamos A y B. Algunos de los archivos son comunes en ambas bibliotecas. Por lo tanto, declaro funciones en la biblioteca A dentro de un espacio de nombres, digamos abc. Entonces, en A y B, una función de función se ve a continuación:
[ in A]
namespace abc {
extern "C" void func();
}
[in B]
extern "C" void func();
Al compilar el proyecto, el compilador arroja errores de enlace que dicen múltiples definiciones de la función func. ¿No está la función func en A dentro del espacio de nombres o hay algún problema con las funciones externas "C"? Si los hay, ¿cómo puedo diferenciarlos a ambos?
Cuando usa Extern "C", está desactivando la manipulación de nombres para que pierda la información del espacio de nombres ya que C no tiene ese concepto. Esto provoca una definición duplicada.