首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UnsatisfiedLinkerror

UnsatisfiedLinkerror
EN

Stack Overflow用户
提问于 2012-06-28 18:05:35
回答 2查看 461关注 0票数 0

当我试图加载库时,我得到了一个异常: UnsatisfiedLinkError。我已经将库文件放置在正确的路径中,并将该路径添加到path环境变量中。但似乎什么都没起作用。直到我更改了Tomcat的配置并将-Djava.library.path=C:\Windows\System32添加到java选项中。我的一位同事不必这样做,但它在她的系统上运行良好,我遗漏了什么?有人能解释一下这个pleasE吗?

EN

回答 2

Stack Overflow用户

发布于 2012-06-28 20:04:46

一种选择是注册dll

代码语言:javascript
复制
Regsvr32 “path to your dll.dll”.

这将安装/注册dll (我假设它是一个dll)

但我通常观察到,如果它是COM,那么您必须注册它并将其放入System32。

票数 0
EN

Stack Overflow用户

发布于 2013-11-27 00:07:29

在JNI中,Java原生方法的名称与对应的C函数的名称不同。为了调用C函数,C函数的名称必须包含前缀"Java_“、类名和方法名。最简单的方法是使用程序"javah“来生成一个包含所有定义的头文件。

尝试下面的Windows示例:(请记住,Java类名必须与相应的文件名相同)

步骤1.创建以下Java文件(P.java):

代码语言:javascript
复制
class P
{
  static
  {
    // "P" is the name of DLL without ".dll"
    System.loadLibrary ("P");
  }

  public static native void f(int i);

  public static void main(String[] args)
  {
    f(1);
  }
}

步骤2. javac P.java

步骤3. javah P

然后,"javah“生成头文件"P.h”

步骤4.创建包含以下两行的"P.def“文件(该文件定义了导出的符号,在本例中是C函数的名称):

代码语言:javascript
复制
EXPORTS
Java_P_f

步骤5.创建C文件(P.c):

代码语言:javascript
复制
#include "p.h"

JNIEXPORT void JNICALL Java_P_f(JNIEnv *env, jclass c, jint i)
{
  printf("%i\n",i);
}

步骤6.在Visual Studio命令提示符中,定义以下变量:

设置JAVA_HOME= JDK的路径

设置include=%include%;%JAVA_HOME%\include;%JAVA_HOME%\include\win32

步骤7.生成DLL:

cl /LD P.c P.def

步骤8.运行Java程序:

java P

(注意: P.dll和P.class位于同一目录中)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11242282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档