Java JNA использует файл CJAVA

Программисты JAVA общаются здесь
Anonymous
Java JNA использует файл C

Сообщение Anonymous »

Я хочу использовать код C на Java и слышал, что это делается с помощью jna. Я следую этому руководству: http://m-hewedy.blogspot.co.uk/2011/08/ ... ample.html

мой код C:

#include

int helloFromC() {
printf("Hello from C!\n");
return 1;
}


Измените мой рабочий каталог на то, где находился мой файл main.c, а затем

gcc -c main.c
gcc -shared -o main.dll main.o


Это создало мой файл main.dll.
Затем я написал код Java и добавил jar jna в путь сборки:

мой код Java:

import com.sun.jna.Library;
import com.sun.jna.Native;
public class HelloWorld {

public interface Add extends Library
{
Add INSTANCE = (Add) Native.loadLibrary("main", Add.class);
int helloFromC();
}
static public void main(String argv[]) {
Add lib = Add.INSTANCE;
System.out.println(lib.helloFromC());
}
}


И это ошибка:

Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'main': Native library (win32-x86-64/main.dll) not found in resource path ([file:/D:/eclipse/workspace/RXTX/bin/, file:/D:/eclipse/workspace/RXTX/lib/RXTXcomm.jar, file:/C:/Users/Angelo/Downloads/jna-4.1.0.jar])
at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:271)
at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:398)
at com.sun.jna.Library$Handler.(Library.java:147)
at com.sun.jna.Native.loadLibrary(Native.java:412)
at com.sun.jna.Native.loadLibrary(Native.java:391)
at HelloWorld$Add.(HelloWorld.java:8)
at HelloWorld.main(HelloWorld.java:12)


Проблема в том, что я не знаю, куда мне поместить dll. Я думаю, что это может быть проблемой.

После помещения моего main.dll в D:/eclipse/workspace/RXTX/bin/ он выдает мне эту ошибку :

Exception in thread "main" java.lang.UnsatisfiedLinkError: %1 is not a valid Win32 application.

at com.sun.jna.Native.open(Native Method)
at com.sun.jna.Native.open(Native.java:1759)
at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:260)
at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:398)
at com.sun.jna.Library$Handler.(Library.java:147)
at com.sun.jna.Native.loadLibrary(Native.java:412)
at com.sun.jna.Native.loadLibrary(Native.java:391)
at HelloWorld$Add.(HelloWorld.java:8)
at HelloWorld.main(HelloWorld.java:12)


Подробнее здесь: https://stackoverflow.com/questions/317 ... use-c-file

Вернуться в «JAVA»