Articles of jni

如何在Linux上编译一个JNI应用程序的dynamic库?

我使用的是Ubuntu 10.10 这就是我所做的。 Hello.java : class Hello { public native void sayHello(); static { System.loadLibrary("hellolib"); } public static void main(String[] args){ Hello h = new Hello(); h.sayHello(); } } 然后我运行了下面的命令: dierre@cox:~/Scrivania/provajni$ javac Hello.java dierre@cox:~/Scrivania/provajni$ javah -jni Hello 我已经获得了Hello.class和Hello.h 。 Hello.h : /* DO NOT EDIT THIS FILE – it is machine generated */ #include <jni.h> […]

OpenCV for Android可以利用标准的C ++支持来获得Android Studio 2.2 for Windows上的本机构build支持吗?

有很多问题和答案围绕获取原生opencv的Androidbuild设正常。 有些使用gradle,有些使用外部工具。 对于本地OpenCV构build而言,这些众多,复杂且经常相互冲突的描述可能会以一致的起点进行简化; 在创buildAndroid Studio 2.2 Beta项目时,有一种方法可以包含C ++支持: 此function是在2016年6月左右添加的。有关更多信息,请参阅Android工具技术文档 。 使用Android Studio 2.2或更高版本以及Gradle 2.2.0或更高版本的Android插件,可以将C和C ++代码编译为Gradle可以用APK打包的本地库,从而将其添加到应用程序中。 然后,Java代码可以通过Java本地接口(JNI)调用本地库中的函数。 如果您想了解更多关于使用JNI框架的信息,请阅读Android的JNI提示。 检查Include C++ Support生成一个名为CMakeLists.txt的外部构build文件。 # Sets the minimum version of CMake required to build the native # library. You should either keep the default value or only pass a # value of 3.4.0 or lower. cmake_minimum_required(VERSION 3.4.1) # Creates […]

如何使用Eclipse在.JAR文件中包含特定于平台的本机库?

我刚开始学习JNI。 我一直在遵循一个简单的例子,并且创build了一个在本地库中调用Hello World方法的Java应用程序。 我想定位Win32和Linux x86。 我的库驻留在一个DLL中,当DLL被添加到我的Eclipse项目的根目录时,我可以使用LoadLibrary调用它。 然而,我不知道如何让Eclipse导出包含DLL和Linux的.SO文件的可运行JAR。 所以我的问题基本上是; 你将如何去在Eclipse中创build一个项目,并包含相同的本地库的几个版本? 谢谢, 马丁

如何在Windows Vista中创build符号链接?

我期望在Windows Vista / 2008计算机上从Java创build符号链接(软链接)。 我很高兴这个想法,我需要打电话给JNI来做到这一点。 虽然我是在实际的C代码后帮助。 什么是适当的系统调用来创build链接? 指向这个问题的一些很好的文档将非常感激。

从ShellExecute获取PID

我从ShellExecuteEx启动一个进程,我真的需要得到ProcessID(这是这个类的要求的一部分)。 不知何故,所有重要的SHELLEXECUTEINFO返回null。 所以例如,如果我使用这个代码: exInfo.lpVerb = "open"; exInfo.lpFile = "C:\\Windows\\system32\\cmd.exe"; exInfo.nShow = 5; ShellExecuteExA(exInfo); 它启动了CMD.exe。 但现在我需要得到它的PID。 exInfo.hwnd返回0 , exInfo.hProcess返回null 。 这是正常的行为? 我不想诉诸使用CreateProcess(),因为我的函数也应该能够启动文件,如“C:\ doc1.docx”。 这只是一个方法,我不能预测将要发射什么(所以我不能预先知道窗口标题/类名,从那里得到hWnd,然后得到PID)。 有人能指出我的错误吗? 谢谢。