#java #c #jna
#java #c #jna
Вопрос:
Я использовал jna (java native access ) для компиляции и запуска исходного кода C в среде cmd.
Во-первых, я создал два файла cSource.c и Example.java и поместите их в диск C.Моя версия jdk — 7 (64-битная), а windows 7 — 64-битная
//cSource.c
#include <stdio.h>
void printPointOf(int n) {
//printf("%pn",amp;n);
}
и
//Example.java
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Platform;
public class Example {
public interface CSource extends Library {
public void printPointOf(int n);
}
static public void main(String argv[]) {
CSource cSrc = (CSource) Native.loadLibrary("csource", CSource.class);
int n = 1;
cSrc.printPointOf(n);
}
}
Во-вторых, я открыл cmd, затем скомпилировал и запустил
Шаг 0. cd c:/
Шаг 1. gcc -o libcsourc.dylib -shared cSource.c
Шаг 2. javac -classpath jna.jar Example.java
Шаг 3. java -classpath jna.jar:. Example
три первых шага были успешными, но на шаге 3 мой cmd обнаружил ошибку:
Could not find or load main class
Как я могу устранить вышеуказанную ошибку? Является ли моя команда на шаге 3 неправильной?
Я ознакомился со статьей здесь: запуск C на Java с помощью JNA
Комментарии:
1. Не устраняет ошибку, но
(void *)amp;n
для адресов печати с%p
2. Вы пробовали ‘java -classpath jna.jar Пример»?
3. ваша
printPointOf(...)
функция выводит только адрес локальной переменной или нет?4. @m88: cmd по-прежнему отображает: «Не удалось найти или загрузить основной класс».
5. у вас система Windows? ‘gcc -o libcsources.dylib -общий cSource.c (если ваша ОС Windows, измените .dylib на .dll)’