有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

我可以控制Java中的JNI本机方法调用名称吗?

我遇到了一个问题。我使用Chilkat for Java,据我所知,它没有任何Maven回购协议。因为它是一个双组件库——我需要注入。dll,通过系统。加载()。这一部分我很清楚,但它们也提供了一些东西,比如wrapper,它在中调用方法。dll

所以,我不想进口他们的产品。jar到我的项目中,但是,然后我自己调用本机方法,它在java中失败。不满意的链接错误。因为,然后java试图调用一个本机方法,它在名称的开头添加了一些东西。例如:如果我在包中声明本机方法,那么它将被调用,java将把所有包层次结构名称添加到它的名称中

我是否可以直接按本机方法的名称调用它,而不进行任何运行时“调整”


共 (1) 个答案

  1. # 1 楼答案

    ^{}可以生成您可能正在寻找的绑定DLL export viewer(以及其他几个)可以列出导出的方法。或者,只需使用dumpbin /EXPORTS ./filename。方法名在运行时会发生更改并不是现实,这只在构建时混淆它们时发生一次——这通常会排除所有需要保持可访问性(用于反射)的对象

    只需启动一个新的JNI项目,了解它是如何以大大降低的复杂性工作的。仍然有可能,这个JAR可能会在本机程序集中传递许可信息,或者本机程序集为JAR执行加密功能。商业图书馆不能像开源图书馆一样对待——首先,我会阅读它们的许可条款