я просмотрел по всему Интернету, и сейчас я застрял в создании общей библиотеки. Первый файл Java:
import java.io.*;
public class JavaToC {
public native void helloC();
static {
System.loadLibrary("HelloWorld");
}
public static void main(String[] args) {
new JavaToC().helloC();
}}
После компиляции вышеуказанной java-программы я также сделал файл заголовка, используя:
javah JavaToC
Теперь я написал свою простую программу C: (HelloWorld.c)
#include <stdio.h>
#include <stdlib.h>
#include <JavaToC.h>
#include <jni.h>
JNIEXPORT void JNICALL Java_JavaToC_helloC(JNIEnv *env, jobject javaobj)
{
printf("Hello World: From C");
return;
}
Теперь я хотел создать родную общую библиотеку, но здесь, где я застрял, я использовал
gcc HelloWorld.C -IC:\Program Files\Java\jdk1.7.0_21\include -IC:\Program Files\Java\jdk1.7.0_21\include\win3 -shared -o HelloWorld.dll
Но после ввода этой команды в windows она возвращает ошибку:
gcc: error: Files\Java\jdk1.7.0_21\include: No such file or directory
gcc: error: Files\Java\jdk1.7.0_21\include\win3: No such file or directory
Я не могу это очистить! : ((
gcc -c -I"/usr/lib/jvm/java-8-openjdk-amd64/include" -I"/usr/lib/jvm/java-8-openjdk-amd64/include/linux" HelloJNI.c
В Ubuntu имя файла HelloJNI.c
и -I/usr/lib/jvm......
- это путь, в котором хранится файл.
Вы можете использовать SWIG (см. Http://www.swig.org/) для создания оболочки Java API поверх своего кода на C. Вы должны написать только файл интерфейса swig, который используется swig для создания соответствующих.java файлов для разных классов и их содержащихся методов.
В вашем текущем подходе одна из проблем, с которой вы сталкиваетесь, заключается в том, что вам нужно помещать кавычки вокруг Program Files, чтобы избежать пробела.