Java JNI:无法加载依赖库

时间:2014-07-21 14:13:04

标签: java c java-native-interface

我有一个Java JNI方法调用。我编写了C代码来定义函数。这非常有效。但是如果我在我的c文件中导入另一个头文件,那么我无法加载这个h文件,我得到了关注错误:

Exception in thread "main" java.lang.UnsatisfiedLinkError: a/b/c/alibrary.dll: Can't find dependent libraries
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1965)
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1890)
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1880)
    at java.lang.Runtime.loadLibrary0(Runtime.java:849)
    at java.lang.System.loadLibrary(System.java:1088)
    at a.b.c.D.<clinit>(EyeXTracker.java:13)

我的alibrary.dll文件如下所示:

#include <Windows.h>
#include <stdio.h>
#include <conio.h>
#include <assert.h>
#include "a_b_c_D.h"
#include "se.h"

#pragma comment (lib, "a.lib")

JNIEXPORT void JNICALL
Java_a_b_c_D(JNIEnv *env, jobject obj)
{
printf("Hello World!\n");
return;
}

如果没有最后一个include语句,它的效果非常好。那么我应该怎么做才能正确加载se.h文件?

1 个答案:

答案 0 :(得分:0)

您的问题不是se.h,而是se.h中声明的任何内容所需的DLL。

如果您从那里不需要任何东西,请不要包含该文件。如果您确实需要它,请阅读其文档,或询问编写它的人,需要什么。在不知道se.h是什么的情况下提供更详细的答案非常困难。

相关问题