【发布时间】:2014-11-11 10:29:55
【问题描述】:
我必须在我的 java 代码中使用一个 dll 文件(c 代码),为此我搜索了 allot,发现 JNA 是最适合它的方式。因此,我正在尝试使用 jna-4.1.0.jar 编写一个 HelloWorld 程序。下面是c代码:
//C hello world example
#include <stdio.h>
void __declspec(dllexport) _stdcall helloFromC()
{
printf("Hello world from the c code! \n");
}
我在 cmd 上使用以下命令为此 c 代码制作 dll:
gcc -c ctest.c
gcc -shared -0 test.dll ctest.o
运行这些命令会给我一个 c 代码的 dll,我将它放在我的简单 java 项目的根目录中。
现在这是我的 java 类:
import com.sun.jna.Native;
import com.sun.jna.Library;
public class HelloWorld {
public interface CTest extends Library {
void helloFromC();
}
public static void main(String[] args) {
CTest INSTANCE = (CTest) Native.loadLibrary("ctest", CTest.class);
INSTANCE.helloFromC();
}
}
现在当我在 eclipse 上运行这个 java 程序时,我得到了这个错误:
Exception in thread "main" java.lang.UnsatisfiedLinkError: %1 is not a valid Win32 application.
请帮我解决这个问题,因为它已经花费了很多时间!
【问题讨论】:
-
不,我的意思是 JNA,使用 jna-4.1.0.jar
-
您使用什么平台/操作系统?创建 dll 并运行 java ?
-
它是 Windows 8.1(64 位)并使用 eclipse for java
-
所以你在windows 8.1上使用这个命令
gcc -shared -0 test.dll ctest.o? -
不,对不起上面的错误,实际在这里:gcc -shared -o test.dll ctest.o
标签: java c eclipse exception dll