426 Jan Bielecki ♦ Java 2
Dołączanie kodu w C++
n«w ActionListener() ( public woid
aecionPerformed(ActionEvent cvt)
(
greec - —/
update(getGraphićsO);
Scring name - getName("=-> "); greec(name);
1
;
JNIEXPORT jotring JNICALL Java_Ma s to r_ge tNamo (JNlEnv *, Jobjeot, jstring);
Hifdef cpluspluS I
lendif
Kendif
nadvo SCring gotNamo(String prompt);
void greec(SCring name)
i
greec - "Hello " ♦ name; repainc();
public void paint(Graphics gDC)
}
gDC.drawscring(greec, 10, 20);
Kruk 4. Wygenerowanie na podstawie B-kudu kłusy Mustcrclass, pliku nagłówkowego Mttster. U zawierającego deklarację funkcji rodzimej
Polecenie generujące javah -jni Master
Plik wygenerowany
/“ DO NOT EDIT THZS FILE - it is machinę generated •/
•:nclude <jni.h>
/• Header for class Master -/
Kifndef _lncluded_Mascer
Ndeflne _Included_Master tifdef “cplusplus excern "C" (
•endif
/•
• Class: Maseer
• Mechod: getName
• Signature: (Ljava/lang/String;)L)ava/lang/String;
Krok 5. Zapisanie definicji funkcji rodzimej z uwzględnieniem jej interfejsu określonego w pliku Master h
linclude <jni.h> ftinclude "Master.h"
Hinclude <iosCream.h>
Kinclude <string.h>
JNIEXPORT jstring JNICALL Java Master getName
TjnIEnv~*pEnv, jobject obj, jstring prompt)
(
const char *pStr -
pEnv->GetStringUTFChars(prompt, 0) ;
char name(81), tmpName(81); int age = 0, tmpAge; cout « pStr;
while(cin » tmpName » tmpAge) ( if(tmpAge > age) ( age - tmpAge; scrcpylname, tmpName);
)
couc « pStr;
pEnv->ReleaseStringUTFChars(prompt, pStr); return pEnv->NewStringUTF(name);
i
Krok 6. Utworzenie za pomocą kompilatora C++ biblioteki dynamicznej GreeLd zawierającej kod funkcji rodzimej
Polecenia wydane kompilatorowi Visuql C ‘ -
Project Workspaćo / Dynamie-Link Library Greet
Insert / Files into Project getName.cpp
Tools / Options / Directories c:\beons\includo c: \beans\ xnclude\wm32
Build / Build