Как запустить программу AC с помощью Java-программы с использованием JNI

1

я просмотрел по всему Интернету, и сейчас я застрял в создании общей библиотеки. Первый файл 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

Я не могу это очистить! : ((

  • 1
    Очевидно, вам нужно избегать или указывать пробелы в ваших аргументах. Если вы этого не сделаете, все, что находится после пробела, рассматривается как еще один аргумент. Отсюда и ошибка.
  • 0
    не могли бы вы показать мне, сэр? DarkFalcon
Теги:
dll
header
jni

2 ответа

0

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...... - это путь, в котором хранится файл.

0

Вы можете использовать SWIG (см. Http://www.swig.org/) для создания оболочки Java API поверх своего кода на C. Вы должны написать только файл интерфейса swig, который используется swig для создания соответствующих.java файлов для разных классов и их содержащихся методов.

В вашем текущем подходе одна из проблем, с которой вы сталкиваетесь, заключается в том, что вам нужно помещать кавычки вокруг Program Files, чтобы избежать пробела.

  • 0
    но даже после помещения кавычек это приводит к неверному аргументу: ((Не могли бы вы указать, где поставить кавычки на самом деле я наивен в программировании
  • 0
    Поместите кавычки по всему пути "C: \ Program Files \ Java \ jdk1.7.0_21 \ include"
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню