C-Methoden aus C ++ / Java / C # -Code aufrufen?

8

Viele der heutigen Programmiersprachen basieren auf C; wie C ++, C #, Java, Objective-C. Also könnte ich eine C-Methode aus C ++ - Code aufrufen? Oder C von Java oder C # anrufen? Oder ist dieses Ziel unerreichbar und unvernünftig? Bitte fügen Sie ein schnelles Codebeispiel für mein und das Verständnis aller anderen ein.

    
Mohit Deshpande 13.06.2010, 07:49
quelle

5 Antworten

5

C ++, C #, Objective-C und Java können alle C-Routinen aufrufen. Hier sind ein paar Links, die Ihnen einen Überblick über den Prozess geben, der benötigt wird, um C von jeder Sprache aufzurufen, nach der Sie gefragt haben.

Alan 13.06.2010, 07:50
quelle
2

Ein Beispiel für den Aufruf von C aus C ++. Speichern Sie diese C-Funktion in einer Datei mit dem Namen a.c:

%Vor%

und kompilieren Sie es:

%Vor%

erzeugt eine Datei namens a.o. Schreiben Sie nun ein C ++ - Programm in eine Datei mit dem Namen main.cpp:

%Vor%

und kompilieren und verlinken mit:

%Vor%

, das ein ausführbares Programm namens myprog erzeugt, das 42 ausgibt, wenn es ausgeführt wird.

    
anon 13.06.2010 07:59
quelle
1

Um C Methoden in Java aufzurufen ...

dort ein Schlüsselwort "nativ", in dem Sie maschinenabhängigen C-Code schreiben und aus Java aufrufen können ....

Im Grunde erstellt es eine DLL-Datei .. dann müssen Sie es in Ihr Programm laden ...

ein schönes Beispiel hier ....

    
vs4vijay 13.06.2010 08:52
quelle
0

Um C-Methoden von Java aus aufzurufen, gibt es mehrere Optionen, einschließlich:

  • JNA - Java Native Access. Frei. Einfach zu verwenden. Handdeklaration von Java-Klassen und -Schnittstellen parallel zu bestehenden C-Strukturen und Funktionen. Langsamer als JNI - um einige hundert Nanosekunden pro Anruf.
  • JNI - Java Native Interface. Frei. Schnellste Option. Benötigt eine Schicht nativen Klebecode zwischen Ihrem Java-Code und den nativen Funktionen, die Sie aufrufen möchten.
  • JNIWrapper - Kommerzielles Produkt, ähnlich wie JNA.
Andy Thomas 29.07.2010 17:46
quelle
0

Um C / C ++ von Java aus aufzurufen, schauen Sie sich auch BridJ an (es ist wie JNA mit C ++ und besser Leistung).

    
zOlive 02.03.2011 15:20
quelle

Tags und Links