Vanuit m'n Java-programma wil ik graag een C++-methode aanroepen. Op zich zou dit via JNI niet zo moeilijk moeten zijn, maar ik krijg het niet werkend. Ik heb in Java een class gemaakt met een native method learn() erin, deze gecompileerd, en vervolgens javah -jni TrainerClass gedaan. Dit levert de volgende headerfile op:
M'n C++ methode ziet er als volgt uit:
Als ik deze laatste file nu probeer te compileren, lukt dat niet. Hij zegt dat in Trainerclass.h (de bovenste) een syntax error optreedt voor void. Hij lijkt dus die JNIEXPORT niet te slikken
Vervolgens geeft hij ook nog eens dezelfde error (syntax error before void) in de implementatie van m'n method (het tweede stuk code dus).
Iemand enig idee wat ik fout doe
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| /* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class TrainerClass */ #ifndef _Included_TrainerClass #define _Included_TrainerClass #ifdef __cplusplus extern "C" { #endif /* * Class: TrainerClass * Method: learn * Signature: ([[IIILjava/lang/String;)V */ JNIEXPORT void JNICALL Java_TrainerClass_learn (JNIEnv *, jclass, jobjectArray, jint, jint, jstring); #ifdef __cplusplus } #endif #endif |
M'n C++ methode ziet er als volgt uit:
C++:
1
2
3
4
5
6
| #include "TrainerClass.h" // Andere includes... JNIEXPORT void JNICALL Java_TrainerClass_learn(JNIEnv *env, jclass jcl, jint object[][], jint width, jint length, jstring fileName) { //... } |
Als ik deze laatste file nu probeer te compileren, lukt dat niet. Hij zegt dat in Trainerclass.h (de bovenste) een syntax error optreedt voor void. Hij lijkt dus die JNIEXPORT niet te slikken
Vervolgens geeft hij ook nog eens dezelfde error (syntax error before void) in de implementatie van m'n method (het tweede stuk code dus).
Iemand enig idee wat ik fout doe
[ Voor 3% gewijzigd door Verwijderd op 19-11-2003 14:21 ]