如何使用JNA在java代码中使用dll文件?

时间:2014-11-11 10:29:55

标签: java c eclipse exception dll

我必须在我的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.

请帮助我解决这个问题,因为它已经花了很多时间!

1 个答案:

答案 0 :(得分:1)

gcc -c ctest.c
gcc -shared -o test.dll ctest.o
try     'o'  ^  not '0'

它找到了你的dll,但它并不喜欢它。