2010-06-13 15 views
8

Muchos de los lenguajes de programación actuales se basan en C; como C++, C#, Java, Objective-C. Entonces, ¿podría llamar a un método C desde el código C++? ¿O llama a C desde Java o C#? ¿O es este objetivo fuera de alcance e irracional? Incluye una muestra de código rápido para mi comprensión y la de los demás.Métodos de llamada C del código C++/Java/C#?

+0

"... se basan en C, como ... C#, Java ..." - ¿Lo son? Creo que esto se limita a llaves y puntos y comas en esos casos. – sellibitze

+0

de acuerdo, la semejanza de sintaxis no significa que se basan en C incluso si pudieran ser (o podrían haber sido como C++); C no tiene métodos.C++ y Objective-C pueden llamar a las funciones C y vincularlas a bibliotecas escritas en C sin problemas. – ShinTakezou

Respuesta

5

C++, C#, Objective-C y Java pueden todos llamar a las rutinas C. Aquí hay algunos enlaces que le darán una visión general del proceso necesario para llamar a C de cada idioma que solicitó.

+0

¿Puede llamar rutinas C desde el código C recién compilado? ¿O el código C tiene que estar en una biblioteca? –

+0

C++ y Objective-C pueden compilar C, ya que ambos son superconjuntos. C# y Java requerirán que el código C exista en libs – Alan

+0

el artículo sobre java no se trata de llamar a c desde java sino llamar a java desde c – ManBugra

2

un ejemplo de llamar C de C++. Guardar esta función C en un archivo llamado A.C.:

int f() { 
    return 42; 
} 

y compilarlo:

gcc -c a.c 

que producirá un archivo llamado a.o. Ahora escriba un programa en C++ en un archivo llamado main.cpp:

#include <iostream> 
extern "C" int f(); 

int main() { 
    std::cout << f() << std::endl; 
} 

y compilar y enlazar con:

g++ main.cpp a.o -o myprog 

que producirá una llamada execuatable miprog que imprime 42 cuando se ejecuta.

1

C para llamar a métodos en Java ...

hay una palabra clave "nativo" en el que se puede escribir código C dependiente de la máquina e invocar desde Java ....

Básicamente se crea una DLL file..then u tiene que cargarlo en el programa de ur ...

un buen ejemplo here ....

0

C para llamar a métodos de Java, hay varias opciones, entre ellas:

  • JNA - Java Native Access. Gratis. Fácil de usar. Declaración manual de las clases y las interfaces de Java en paralelo a las estructuras y funciones de C existentes. Más lento que JNI: unos pocos cientos de nanosegundos por llamada.
  • JNI - Java Native Interface. Gratis. La opción más rápida. Requiere una capa de código de pegamento nativo entre su código Java y las funciones nativas que desea llamar.
  • JNIWrapper - Producto comercial, similar a JNA.
0

Para llamar a C/C++ desde Java, también eche un vistazo a BridJ (es como JNA con C++ y un mejor rendimiento).

Cuestiones relacionadas