teorico programas programacion practico paso lenguaje ejemplos dev comandos basicos basica c++ c

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í.


  1. 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).
  2. 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(); }