c++ - programas - lenguaje c
Llamando código C++ desde C (1)
Esta pregunta ya tiene una respuesta aquí:
¿Hay alguna forma en la que pueda llamar al código C ++ desde el código C?
class a
{
someFunction();
};
¿Cómo llamar a someFunction()
desde un código C? En otras palabras, estoy preguntando cómo evitar la mutilación de nombres aquí.
- Primero, escriba un contenedor de API C en su biblioteca basada en objetos. Por ejemplo, si tiene una clase Foo con una barra de método (), en C ++ lo llamaría Foo.bar (). Al hacer una interfaz C, tendría que tener una barra de funciones (global) que lleve un puntero a Foo (idealmente en forma de un puntero de vacío para la opacidad).
- Envuelva las DECLARACIONES de la API de C que ha exportado en extern "C".
(No recuerdo a todos los malditos operadores de cast para C ++ fuera de la mano y soy demasiado perezoso para buscarlos, así que reemplaza (Foo *) con un elenco más específico si lo deseas en el siguiente código).
// My header file for the C API.
extern "C"
{
void bar(void* fooInstance);
}
// My source file for the C API.
void bar(void* fooInstance)
{
Foo* inst = (Foo*) fooInstance;
inst->bar();
}