我必须在我的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.
请帮我解决这个问题,因为它已经花了很多时间!
最佳答案
gcc -c ctest.c
gcc -shared -o test.dll ctest.o
try 'o' ^ not '0'
它正在寻找您的 dll,但它不喜欢它。
关于java - 如何使用JNA在java代码中使用dll文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26862722/