gpt4 book ai didi

java - 查找函数时出错 'HelloWorld' : The specified procedure could not be found

转载 作者:行者123 更新时间:2023-12-01 12:52:09 35 4
gpt4 key购买 nike

我正在尝试访问我在 java 代码中创建的 VB .NET dll 方法。我正在尝试使用 JNA 来实现这一目标。

这是我的 Java 代码。

Hello.java(调用dll方法)

import com.sun.jna.Native;

public class Hello {

public static void main(String[] args) {
String myPath = System.getProperty("user.dir");
System.setProperty("java.library.path", myPath);
NativeInterface nInterface = (NativeInterface) Native.loadLibrary(
"SampleDLLProject", NativeInterface.class);
nInterface.HelloWorld();

}

}

这是界面NativeInterface.java

import com.sun.jna.*;

public interface NativeInterface extends com.sun.jna.Library {

public void HelloWorld();
}

我面临的错误是:

线程“main”java.lang.UnsatisfiedLinkError中出现异常:查找函数“HelloWorld”时出错:找不到指定的过程。 在 com.sun.jna.Function。(Function.java:179) 在 com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:345) 在 com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:325) 在 com.sun.jna.Library$Handler.invoke(Library.java:203) 在 $Proxy0.HelloWorld(来源不明) 在 Hello.main(Hello.java:10)

我还使用 ildasm 检查了 dll 是否存在任何类型的差异。

enter image description here

dll 中的方法名称和 Hello.java 中的名称没有区别。

有趣的是,我尝试测试 windows dll msvcrt.dll 的 put() 方法的代码,它工作得很好。所以问题出在 DOT NET dll 上。请帮忙!

最佳答案

您使用的库用于从 native 库(例如windows.dll和msvcrt.dll)加载方法,这些库被编译成可以直接在x86或x64处理器上运行的 native 代码。

在 VB.NET 中创建的库不是 native 库,它们是 CLI(公共(public)语言基础设施)程序集,被编译为 CIL(公共(public)中间语言),然后动态编译以运行任何程序一种处理器(就像 Java!)

关于java - 查找函数时出错 'HelloWorld' : The specified procedure could not be found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24140439/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com