Я установил MinGw в Windows 10 и выполнил некоторые онлайн-инструкции для создания проекта JNI. Хотя, я следовал инструкциям дословно, gcc не может найти файл jni.h. Однако этот файл находится в каталоге/include моего JAVA_HOME. Вот команды я Выпущено:Как% переменная среды JAVA_HOME% в оболочке MinGw
[email protected]/c/Users/sansari/Documents/source/java
$ set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_91
[email protected]/c/Users/sansari/Documents/source/java
$ echo %JAVA_HOME%
%JAVA_HOME%
[email protected]/c/Users/sansari/Documents/source/java
$ gcc -Wl, --add-stdcall-alias -I"%JAVA_HOME%\include" -I"%JAVA_HOME%\include\win32" -shared -o hello.dll HelloJNI.c
gcc.exe: error: unrecognized command line option '--add-stdcall-alias'
[email protected]/c/Users/sansari/Documents/source/java
$ gcc -Wl,--add-stdcall-alias -I"%JAVA_HOME%\include" -I"%JAVA_HOME%\include\win32" -shared -o hello.dll HelloJNI.c
HelloJNI.c:1:17: fatal error: jni.h: No such file or directory
#include <jni.h>
^
compilation terminated.
[email protected]/c/Users/sansari/Documents/source/java
Я пытаюсь убедиться, что я знаю структуру файла, который должен быть на месте для проекта JNI, а также закапывают немного больше о том, чтобы обменять различные структуры из JAVA-классы для собственного кода и наоборот.
Я также попытался это так:
$ gcc -Wl,--add-stdcall-alias -I"\include" -I"\include\win32" -shared -o hello.dll HelloJNI.c
HelloJNI.c:1:17: fatal error: jni.h: No such file or directory
#include <jni.h>
^
compilation terminate.
@Chrono Kitsune- Спасибо; Вот результат:
[email protected]/c/Users/sansari/Documents/source/java
$ export JAVA_HOME="C:\Program Files\Java\jdk1.8.0_91"
[email protected]/c/Users/sansari/Documents/source/java
$ gcc -Wl,--add-stdcall-alias -I"\include" -I"\include\win32" -shared -o hello.dll HelloJNI.c
HelloJNI.c:1:17: fatal error: jni.h: No such file or directory
#include <jni.h>
^
compilation terminated.
Странно, что я также установил путь к каталогу java и перезагрузил машину. Когда я выдаю java, оболочка находит исполняемый файл.
Я добавил JAVA_HOME к моим переменным и к переменной пути. Я все еще получаю то же сообщение. Я также перезагрузил машину.
[email protected]/c/users/sansari/Documents/source/java
$ gcc -Wl,--add-stdcall-alias -I"\include" -I"\include\win32" -shared -o hello.dll HelloJNI.c
HelloJNI.c:1:17: fatal error: jni.h: No such file or directory
#include <jni.h>
^
compilation terminated.
[email protected]/c/users/sansari/Documents/source/java
$ gcc -Wl,--add-stdcall-alias -I"%JAVA_HOME%\include" -I"%JAVA_HOME%\include\win32" -shared -o hello.dll HelloJNI.c
HelloJNI.c:1:17: fatal error: jni.h: No such file or directory
#include <jni.h>
^
compilation terminated.
Это сработало!
[email protected]/c/users/sansari/Documents/source/java
$ gcc -Wl,--add-stdcall-alias -I"$JAVA_HOME\include" -I"$JAVA_HOME\include\win32" -shared -o hello.dll HelloJNI.c
[email protected]/c/users/sansari/Documents/source/java
$ ls
HelloJNI.c HelloJNI.class HelloJNI.h HelloJNI.java hello.dll
Это больше похоже на тему для [SuperUser] (http://superuser.com/). – Turing85
В оболочке MinGW используется другой синтаксис для переменных.Например, 'echo% PATH%' не работает так, как предполагалось. Однако 'echo $ PATH' делает. Вам нужно будет использовать синтаксис оболочки POSIX 'export VAR =" value "' вместо синтаксиса Windows/DOS 'set VAR =" value "'. –
@ Turing85- Я был бы рад переместить его, но это вопрос о конфигурации компилятора и о том, как создать проект java. Я чувствую, что это законно. Какой программист не столкнулся с проблемой отсутствия видимых файлов? – user3326293