我必须在我的java代码中使用一个dll文件(c代码),我搜索了它,发现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.
请帮助我解决这个问题,因为它已经花了很多时间!
答案 0 :(得分:1)
gcc -c ctest.c
gcc -shared -o test.dll ctest.o
try 'o' ^ not '0'
它找到了你的dll,但它并不喜欢它。