Tag: native

JNI- unpinned primitve数组错误

我想在图像处理中实现反转效果。 我在java端解码颜色通道,我将2D数组传递给C端,我反转(255值)然后我返回一个处理过的2D数组。 这是我的C代码: #include #include #include #include JNIEXPORT jobjectArray JNICALL Java_com_example_invert_MainActivity_inv (JNIEnv *env, jobject obj, jobjectArray arr, jint w, jint h) { double a[w][h][3]; int i,j,k; double x = 0; ///////////////////READING THE INPUT ARRAY//////////////////////// jsize dim1 = (*env)->GetArrayLength(env, arr); for (i=0; iGetObjectArrayElement(env, arr, i); int dim2 = (*env)->GetArrayLength(env, line1); jdouble *pos1 = (*env)->GetDoubleArrayElements(env, line1, 0); […]

Cygwin编译错误有问题的框架:#C 使用JNI

我使用JNI创建了一个简单的hello world应用程序一切正常,即使我的64位的dll被创建但是当我运行应用程序时它显示以下错误: # # A fatal error has been detected by the Java Runtime Environment: # # EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x0000000180116d47, pid=2140, tid=0x0000000000001710 # # JRE version: Java(TM) SE Runtime Environment (8.0_131-b11) (build 1.8.0_131-b11) # Java VM: Java HotSpot(TM) 64-Bit Server VM (25.131-b11 mixed mode windows-amd64 compressed oops) # Problematic frame: # C [cygwin1.dll+0xd6d47] # […]

在jni中运行的本机C代码与在Android中的shell中运行之间存在差异

我有一个原生的C Android应用程序。 首先,我将本机C代码构建到共享库中,jni将使用此库。 这个库使用一些内核可加载模块.ko,一些已经加载,一些必须通过“insmod”命令加载。 我还构建了一个使用该库的可执行文件,它通过命令行运行。 但是当它调用需要加载内核模块的函数时,执行与可执行文件相同工作的jni会失败。 那么他们之间有什么区别? 我是否需要授予我的应用程序一些权限?

通过JNI / DLL或EXE执行本机代码?

我们有一个本机应用程序,我们可以通过JNI-> DLL或通过命令行参数调用EXE来访问。 哪种方法最好? 我们将每天调用此方法大约100次。 表现并不是非常重要。 这个原生应用程序是由我们公司以外的团队开发的,所以我们不太熟悉代码(尽管我们拥有它)。 EXE路线似乎更容易,更直接(特别是因为我们没有使用很多C)。 另外,如果你的DLL代码有内存泄漏或遇到其他一些麻烦,我会收集JNI,你可以崩溃你的JVM。

调试Visual Studio 2010 DLL项目

我正在尝试从Visual Studio 2010调试C / C ++本机DLL项目。我正在尝试按照这些说明操作: http : //msdn.microsoft.com/en-us/library/c91k1xcf(v = VS.100 )的.aspx 我想使用内置的调试器,并能够像常规的.exe项目一样执行代码,检查结构等。 上面的页面上的说明描述了配置属性下的调试类别,我没看到。 http://img707.imageshack.us/img707/4402/lalasz.png 只需按F5进行调试就会出现以下错误: 无法启动程序’C:\ Users ……. Test.dll’ 我已经多次将调试器用于常规.exe项目,并且在这台计算机上运行正常。 我不确定我现在是否只是错过了一些非常明显的东西。 编辑:由于我从一开始就没有说清楚,我希望Visual Studio将我的DLL加载到存根过程中,然后让我从那里调试源代码,就像OllyDbg一样。 我的DLL不是包含要导出和调用的一堆函数的类型。 相反,它在DllMain中执行切换/大小写,并且在DLL_PROCESS_ATTACH上将生成一个新线程。 因此,我需要Visual Studio才能将我的DLL加载到存根可执行文件中,并允许我设置断点等。

jni – 将int 转换为jobjectArray并将其返回给java

我想在c中创建一个新数组,保持原始数组加倍。 这是我的c代码,它编译但应用程序崩溃: #include JNIEXPORT jobjectArray JNICALL Java_com_example_jninew_MainActivity_getNum(JNIEnv *env, jobject obj, jintArray arr) { int i,j, sum = 0; jsize width = (*env)->GetArrayLength(env, arr); int array[2][2]; for (i=0; iGetObjectArrayElement(env, arr, i); int height = (*env)->GetArrayLength(env, line); jint *pos = (*env)->GetIntArrayElements(env, line, 0); for (j=0; jReleaseIntArrayElements(env, arr, pos, 0); } return array; } 主要java代码: package com.example.jninew; import […]

将C代码(netcat)编译为本机Android可执行文件

我正在编写一个使用Netcat通过网络连接提供帧缓冲的bash脚本,但首先我需要将其编译为本机可执行文件。 我甚至让这个脚本在Ubuntu机器上工作,默认安装netcat。 我发现这个https://github.com/android/platform_external_netcat但根本没有NDK经验。 这显然不会使用JNI或Java,因此制作Android应用程序的默认方法不会让我随处可见。 所以问题是。 如何从此源代码获取可执行文件?