当前位置: 首页 > 知识库问答 >
问题:

使用JNA将多个。dll库注册到单个java类中

费学
2023-03-14

首先是一些上下文,来彻底解释我已经尝试过的方法:

我在windows上的一个基于java的编程平台上工作,该平台提供了对自定义java函数的访问以及其他几个扩展。在这个建模平台的源代码中,有一个类“cvode”,它允许对本地库“cvode”的访问,以导入C++库cvode的功能。

//imports
public class CVODE {

    static {
        Native.register("cvode");
    }
    public static native int ... //methods
}

我从CVODE库创建了共享库,得到了两个文件:sundials_cvode.dll和sundials_nvecserial.dll。

Unexpected Exception UnsatisfiedLinkError: Unable to load library 'cvode': The specified module could not be found.
Unexpected Exception UnsatisfiedLinkError: Error looking up function 'N_VDestroy_Serial': The specified procedure could not be found.
public class CVODE {

    static {
        Native.register("sundials_cvode");
        Native.register("sundials_nvecserial");
    }
    public static native int ... //methods
}
Unexpected Exception UnsatisfiedLinkError: Error looking up function 'N_VNew_Serial': The specified procedure could not be found.

所以我只能通过调用native.register()两次来猜测错误的结果。导致未加载第二个库或出现错误。我希望了解我做错了什么,或者如何更好地了解哪里出了问题。

共有1个答案

申屠瀚海
2023-03-14

据我所知,每个类只能加载一个dll,即将类分成两个,每个类提供特定dll提供的方法。

另见此处:https://stackoverflow.com/a/32630857/1274747

 类似资料:
  • 问题内容: 我一直在将RMI用于当前正在处理的项目,并且希望将多个主机绑定到单个RMI注册表。 但是,当我尝试这样做时,我收到一条错误消息: java.rmi.AccessException:不允许Registry.Registry.bind;origin / 192.168.0.9是非本地主机 我这样做是在谷歌上进行的,似乎RMI默认情况下会阻止远程主机进行绑定,我想知道是否有某种方法可以覆盖或

  • 我在使用JNA的java中使用dll,但我得到以下错误 线程“main”java中出现异常。lang.UnsatifiedLinkError:查找函数“GetStatus”时出错:找不到指定的过程。 不知道如何解决此问题? 请帮忙。 这是java代码

  • 我通常使用加载一个DLL。但是我想它不是这样工作的,因为我把这个函数调用分配给了实例成员。

  • 错误:由于隐式依赖模块中缺少导出函数,至少有一个模块具有未解析的导入。错误:发现具有不同CPU类型的模块。 但是这个DLL是从另一个运行良好的DLL派生出来的(尽管它是从VB代码调用的),但它也抛出了同样的两个错误。 最后,我是这样称呼它的:

  • 我有一个类似于下面的类: 问题是,有太多@bean注释的方法,它们只是在名称、返回类型和方法调用的参数上有所不同。我想让这堂课类似于以下内容: Spring有可能吗?

  • 问题内容: 我有以下代码,但此代码仅将最后一张图像添加到pdf中。 您能否给我一些有关如何更新代码以便将所有图像添加到导出的pdf中的提示?imagePathsList包含要添加到单个pdf中的图像的所有路径。 最好的问候,奥雷利亚 问题答案: 看一下MultipleImages示例,您将发现代码中存在两个错误: 您创建一个页面的大小为595 x 842用户单位,并将每个图像添加到该页面,而不管图