我在使用JNA的java中使用dll,但我得到以下错误
线程“main”java中出现异常。lang.UnsatifiedLinkError:查找函数“GetStatus”时出错:找不到指定的过程。
不知道如何解决此问题?
请帮忙。
这是java代码
import com.sun.jna.Library;
import com.sun.jna.Native;
/** Simple example of native library declaration and usage. */
public class First {
public interface TEST extends Library {
public String GetStatus();
}
public static void main(String[] args) {
TEST obj = (TEST ) Native.loadLibrary("TEST ", TEST .class);
System.out.println( obj.GetStatus());
}
}
这个掘金是超级容易使用和完美的作品。https://www.nuget.org/packages/UnmanagedExports
您需要Visual Studio 2012(Express)。安装后,只需在要导出的任何静态函数之前添加[RGiesecke. DllExport. DllExport]
。就是这样!
例子:
C#
[RGiesecke.DllExport.DllExport]
public static int YourFunction(string data)
{
/*Your code here*/
return 1;
}
Java语言
在顶部添加导入:
import com.sun.jna.Native;
在您的类中添加接口。它是您的C#函数名称前面有字母“I”:
public interface IYourFunction extends com.sun.jna.Library
{
public int YourFunction(String tStr);
};
在类中需要的地方调用您的DLL:
IYourFunction iYourFunction = (IYourFunction )Native.loadLibrary("full or relative path to DLL withouth the .dll extention", IYourFunction.class);//call JNA
System.out.println("Returned: " + IYourFunction.YourFunction("some parameter"));
编辑:如果DLL为32位,则JDK/JRE也必须为32位。在代码中添加以下检查:
if(!System.getProperty("os.arch").equals("x86")) {
throw new Exception(".NET DLL " + "32bits JRE/JDK is required. Currently using " + System.getProperty("os.arch") + ".\r\nTry changing your PATH environement variable.");
}
问题内容: 我需要使用JavaScript中jar文件中的类。我正在通过Java ScriptEngine使用JavaScript,并且想做一些与Jython相似的事情, 当我使用Jython执行此操作时,它工作正常,并且python文件可以使用jar文件中的api类。 问题答案: 我可以以此方式在JavaScript中使用jar的类,但是在运行时必须将jar设置为类路径。我正在寻求类似于Jyth
问题内容: 我花了很多时间试图在Java应用程序中使用C#函数,但是没有成功…我在C#中编写了以下lib: 这个dll调用了另一个dll来进行一些操作,但是当我对其进行编译时,我可以在Realse文件夹中找到Dll,并且一切似乎都还可以,所以我使用32bit,64bit和Any CPU选项对其进行了编译,以确保它不是我的问题。 使用32位Dependency Walker 和任何CPU选项分析我的
问题内容: 我一直是一个简单使用的人: 我将接口用作可移植性的类型名称,这样当我问诸如此类的问题时,便可以重新编写代码。 什么时候应该使用过,反之亦然? 问题答案: 摘要 用在最好许多更多使用情况比。如果不确定,请从开始。 并且是List接口的两种不同的实现。用双向链表实现它。ArrayList用动态调整大小的数组实现它。 与标准的链表和数组操作一样,各种方法将具有不同的算法运行时。 对于 是O(
我试图构建一些Java代码来调用用VC++编写的DLL中的一些网络功能。导出的函数包括(来自.h文件) 然后按以下方式调用它 但是执行对CsilGetData的调用会给出 线程“main”java.lang.error:在com.sun.jna.Native.invokeint(本机方法)在com.sun.jna.function.invoke(function.java:371)在com.sun
我编写了以下类来包装win32事件对象的创建 我在Windows7机器上使用JNA3.3,当我试图创建这个类的实例时,我得到了以下堆栈跟踪。 线程“main”java.lang.UnsatifiedLinkError中出现异常:查找函数“CreateEvent”时出错:找不到指定的过程。
问题内容: 我当前正在使用Elasticsearch V2.3.1。我想在Java中使用以下Elasticsearch查询。 上面的查询搜索名为“ kimchy”的“用户”,并使用给定值更新“列表”字段。该查询同时更新多个文档。我在https://www.elastic.co/guide/en/elasticsearch/client/java- api/2.3/java-docs- update