Tag: jna

线程“main”中的exceptionjava.lang.UnsatisfiedLinkError:资源路径中找不到jnidispatch(/ com / sun /jna/win32-x86/jnidispatch.dll)

我有一个小的测试程序,可以在JBuilder 6调试器中完美运行。 当我创建一个.jar文件并运行它时,我收到一个错误 >java -jar testadll.jar Start of DLL test Exception in thread “main” java.lang.UnsatisfiedLinkError: jnidispatch (/com/sun /jna/win32-x86/jnidispatch.dll) not found in resource path at com.sun.jna.Native.loadNativeLibraryFromJar(Native.java:708) at com.sun.jna.Native.loadNativeLibrary(Native.java:685) at com.sun.jna.Native.(Native.java:109) at testadll.TestThisDLL$PenniesLib.(TestThisDLL.java:24) at testadll.TestThisDLL.main(TestThisDLL.java:33) 我搜索了我的驱动器,它上面没有jnidispatch.dll。 该计划是 package testadll; import com.sun.jna.Library; import com.sun.jna.Native; //import com.sun.jna.NativeLong; import com.sun.jna.Platform; import com.sun.jna.win32.StdCallLibrary; //import com.sun.jna.*; public class TestThisDLL { public interface […]

带有JNA的函数scanf

我正在尝试使用JNA的scanf函数: package importDLLs; import com.sun.jna.Library; import com.sun.jna.Native; public class JNATest { public interface CLibrary extends Library { CLibrary clib = (CLibrary) Native.loadLibrary(“msvcrt”, CLibrary.class); void printf(String format, Object… args); int sprintf(byte[] speicher, String format, Object…args); int scanf (String format, Object… args1); } public static void main(String[] args) { CLibrary.clib.printf(“Hello World”); String test= null; args = new […]

使用JNA获取本地计算机证书

我正在尝试从本地计算机Windows商店获取证书。 想要获得的是“证书(本地计算机) – >个人 – >证书”中的证书。 我使用此代码访问路径“证书 – 当前用户 – >个人 – >证书”中的证书 NativeLibrary crypt32 = NativeLibrary.getInstance(“Crypt32”); Function functionCertOpenSystemStore = crypt32.getFunction(“CertOpenSystemStoreA”); Object[] argsCertOpenSystemStore = new Object[] { 0, “MY”}; HANDLE h = (HANDLE) functionCertOpenSystemStore.invoke(HANDLE.class, argsCertOpenSystemStore); 有关如何从“证书(本地计算机) – >个人 – >证书”获取证书的任何想法? 我正在尝试使用JNA,因为我读取的不可能从Java访问本地机器证书。 我唯一得到的就是使用密钥库获取“当前用户”证书,如下所示: KeyStore ks = KeyStore.getInstance(“Windows-MY”, “SunMSCAPI”); 我也试过这个: KeyStore ks = KeyStore.getInstance(“Windows-ROOT”, “SunMSCAPI”); 有人能给我一个线索吗?

使用JNA将const char **映射到Java类型

我正在尝试使用Java中的C ++库和JNA。 在库的头文件中,我有以下方法声明: extern “C” void foo(const char** bar); paramterer bar应该传递给foo空,并且foo vill为它分配一个我想在Java中进行检索的值。 应该如何设置相应的Java方法声明(例如,我应该将哪种Java类型映射到),以及如何使用它? 我尝试了以下Java声明: void foo(String bar); void foo(String[] bar); void foo(Pointer bar); 当我调用foo时,它们都会导致以下错误: 线程“main”中的exceptionjava.lang.Error:无效的内存访问

JNA:如何处理未知的结构?

如果我没弄错的话, JNA Structure依赖于相应Java类的公共字段来构建结构,这些字段应该扩展Structure 。 我的问题是我需要传递一个事先不知道声明的结构(让我们说它在运行时已知)。 我只有一个Object列表,C库期望它作为(对a)的结构。 我仍然可以使用Structure类,还是必须手工构建Memory对象,处理大小,对齐/打包自己? 例如: /* native code */ typedef struct mystruct { int x; float y; } mystruct; void dosomething(mystruct * s) { s->y += s->x; } 在Java中: … callFunctionWithSt(“dosomething”, new Object[]{Integer.valueOf(2),Float.valueOf(3.0)}); … void callFunctionWithSt(String funcName, Object[] structVals) { NativeLibrary nl = … Pointer arg = … // or Memory … […]

通过JNA访问USB设备时,Android应用程序“设备或资源忙”

在Android应用程序中使用JNA时,当我尝试在USB设备上执行ioctl操作时,遇到LastErrorException ,消息为Device or resource busy 。 我不明白为什么这是或如何处理它。 任何人都可以提供任何指导吗? 我实际上使用的是第三方代码段,其源代码可在此处查看。 我得到的错误如下: E/AndroidRuntime: FATAL EXCEPTION: Thread-556 Process: edu.ucdavis.auditoryenhancer, PID: 31335 com.sun.jna.LastErrorException: [16] Device or resource busy at com.sun.jna.Native.invokeInt(Native Method) at com.sun.jna.Function.invoke(Function.java:390) at com.sun.jna.Function.invoke(Function.java:323) at com.sun.jna.Library$Handler.invoke(Library.java:236) at java.lang.reflect.Proxy.invoke(Proxy.java:393) at biz.source_code.usb.$Proxy0.ioctl(Unknown Source) at biz.source_code.usb.UsbIso.setInterface(UsbIso.java:414) 我自己的代码导致这个错误堆栈如下: // the variable “dev” is an instance of android.hardware.usb.UsbDevice UsbInterface interface = dev.getInterface(2); UsbEndpoint […]

为什么我对winapi GetWindowPlacement的调用失败(使用JNA)?

这些是winapi方法 BOOL WINAPI SetWindowPlacement( _In_ HWND hWnd, _In_ const WINDOWPLACEMENT *lpwndpl ); typedef struct tagWINDOWPLACEMENT { UINT length; UINT flags; UINT showCmd; POINT ptMinPosition; POINT ptMaxPosition; RECT rcNormalPosition; } WINDOWPLACEMENT, *PWINDOWPLACEMENT, *LPWINDOWPLACEMENT; 我的Java代码: – class WINDOWPLACEMENT{ public int length; public int flags; public int showCmd; public POINT ptMinPosition; public POINT ptMaxPosition; public RECT rcNormalPosition; } […]

Delphi Dll函数中的Java JNA映射

如何使用JNA映射此function: Delphi Dllfunction代码: function send_command (const command : byte; var size : byte; var data : pbyte) : integer; stdcall external ‘comunication.dll’; 使用Delphi示例程序中的示例: send_command(cmdCLOCK_ADJUST,tam,pb); 哪里: const cmdCLOCK_ADJUST = $18; var tam : byte; pb, p : pbyte; begin … tam = 7; p:= pb; for i:= 1 to tam do begin p^:= Dados [i]; inc […]

找不到Java JNA sendMessage()

我正在尝试使用JNA (概述)在最小化时将消息发送到应用程序或不在顶部(例如鼠标单击),并且我发现人们正在使用com.sun.jna.platform.win32.User32。 SendMessage A(hW,0x0201,0,0); 但我在这堂课中找不到这个function。 如果我做错了,有人可以给我一个如何实现它的例子吗? 码: User32 user32; Pointer hW = user32.GetForegroundWindow().getPointer(); user32.SendMessageA( hW, 0x0201, 0, 0 );

“崩溃发生在Java虚拟机之外的本机代码中。”如何解决这个错误(Java)?

使用此链接中的库http://www.blog.kslemb.com/doku.php/en/projects/globx/java_hid 我已修改此代码以在HID终端上写入 if (HIDHandle.equals(WinBase.INVALID_HANDLE_VALUE)) { return HID_DEVICE_NOT_OPENED; } /* Write Feature report */ boolean Status=Kernel32.INSTANCE.WriteFile(HIDHandle, buffer, (int)buffersize, null, null); if (Status == false) { debug(“Write File: ” + getSystemError(Kernel32.INSTANCE.GetLastError())); return HID_DEVICE_TRANSFER_FAILED; } else { return HID_DEVICE_SUCCESS; } 此代码将成功写入HID设备,但随后会产生此错误 A fatal error has been detected by the Java Runtime Environment: # # EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x7600d4d5, […]