Я пытался изучить часть JNI в Linux. Я нахожусь на фоне C. Я пытался использовать JNI, чтобы я мог легко сделать интерфейс на Java. Я считаю, что пользовательский интерфейс может быть создан в Javascript/html. Это может легко вызвать Java api. Через Java Api я могу вызывать API C/C++. Я считаю, что это самый простой способ сделать пользовательский интерфейс. Таким образом, я пытаюсь JNI. Вот пример кода, который я сделал.Компиляция программы JNI на linux-Fedora core?
Hello.java
public class Hello {
public native void sayHi(String who, int times);
static { System.loadLibrary("HelloImpl"); }
public static void main (String[] args) {
Hello hello = new Hello();
hello.sayHi(args[0], Integer.parseInt(args[1]));
}
}
А позже
javac Hello.java
javah -jni Hello
Сейчас я пишу hello.c программу
#include <stdio.h>
#include "Hello.h"
JNIEXPORT void JNICALL Java_Hello_sayHi
(JNIEnv *, jobject, jstring, jint)
{
printf("Shreyas.. HEllo world...\r\n");
}
Я столкнулся с проблемой при компиляции привет. c.
$ gcc -c hello.c -I/usr/java/jdk1.7.0_45/include/ -I/usr/java/jdk1.7.0_45/include/linux/
hello.c: In function ‘Java_Hello_sayHi’:
hello.c:5:3: error: parameter name omitted
hello.c:5:3: error: parameter name omitted
hello.c:5:3: error: parameter name omitted
hello.c:5:3: error: parameter name omitted
Не могли бы вы помочь мне в этом? Кроме того, согласны ли вы, JNI - это хороший способ реализовать полное решение стека - UI (JAVASCRIPT) + JAVA + C/C++ -> Linux?
Какая часть имени параметра опущена? Хороший traditon дает параметры в C имени. И нет, это совсем не хорошая идея, так как требует глубокого знания всех {C, Java, Javascript} –
Вы запутываете Java с Javascript? Они не одинаковы. – Joni
C и C++ - разные языки. То, что вы написали, является допустимым C++, но не является допустимым C. – Casey