我需要在我的java代码中使用RegLoadKey函数,方法是使用南国防军,但是我得到了以下错误消息:
线程“主”java.lang.UnsatisfiedLinkError中的异常:查找函数‘RegLoadKey’时出错:找不到指定的过程。区块报价
RegLoadKey语法
LONG WINAPI RegLoadKey(
_In_ HKEY hKey,
_In_opt_ LPCTSTR lpSubKey,
_In_ LPCTSTR lpFile
);我的代码: Advapi32.java
import com.sun.jna.platform.win32.WinReg.HKEY;
import com.sun.jna.win32.StdCallLibrary;
public interface Advapi32 extends StdCallLibrary
{
long RegLoadKey(HKEY hKey, String lpSubKey,String lpFile);
}apiTest.java
import com.sun.jna.*;
import com.sun.jna.platform.win32.WinReg.HKEY;
public class apiTest
{
public static void main (String [] args)
{
Advapi32 lib2 = (Advapi32) Native.loadLibrary("Advapi32", Advapi32.class);
HKEY key1 = new HKEY();
String filePath = "C:\\tmp\\software";
String regName = "loadedRegKey";
long test = lib2.RegLoadKey(key1, regName, filePath);
}我认为我的代码有几个问题。我是windows api和jna的新手。
发布于 2015-04-21 07:29:43
您知道Advapi32封装已经是JNA的一部分了吗?看看这里。我刚刚看到您的方法RegLoadKey还没有添加到那里。因此,添加它,并提交给jna的人改变。之后,您可以像这样使用它(伪代码):
public class RegistryRead{
private Advapi32 api = null;
public RegistryRead(){
this.api = Advapi32.INSTANCE;
}
public void read() {
long winapi = this.api.RegLoadKey(HKEY hkey, String subkey, String file);
...
}
}发布于 2015-04-21 16:27:15
发布于 2015-06-05 08:01:05
这是一个典型的JNA开发误差。只需在使用之前添加。
System.setProperty("jna.library.path","PATH_TO_LIBRARY_JNA");PATH_TO_LIBRARY_JNA - jna的绝对路径
https://stackoverflow.com/questions/29751739
复制相似问题