我正在一个Android应用程序中测试集成的静态库。不幸的是,编译不起作用!你能帮我吗?
我总是会犯错误:
jni/main-jni.cpp: In function 'jint Java_com_tmz_cc_MainActivity_test1(JNIEnv*, jobject)': jni/main-jni.cpp:10:23: error: 'FileSync' has not been declared
make: *** [obj/local/armeabi/objs/ccSharedLib/main-jni.o] Error 1
我以为链接
当我创建以下文件时,我对java很陌生,并且目前正在学习本机方法:
Main.java
public class Main {
public native int intMethod(int i);
public static void main(String[] args) {
System.loadLibrary("Main");
System.out.println(new Main().intMethod(2));
}
}
Main.c
#include <jni.h>
#include "Ma
我尝试使用本地C/C++代码创建一个OSGi包,以便在运行Felix的安卓设备上进行部署。
我能够编译本地代码,并使用Android NDK arm-linux-androideabi工具链将其链接到一个共享对象。
现在,我尝试使用eclipse PDE ( export ->Deployable plug-ins and fragments)将OSGi包导出为.jar文件。此操作失败。弹出的错误窗口告诉我:
'Export Plug-ins' has encountered a problem.
Processing inclusion from feature or
我目前正在对32/64位上所有主要操作系统的BLAS/LAPACK (Fortran库)的本机绑定进行修改,将其作为一个库。
然而,我已经开始遇到一些与UNIX/Windows世界和Fortran / C之间的数据类型差异有关的问题。
和数据类型的表是非常非公开的,因为大小。
是否有一个规范的源(或者我们可以通过引用权威源来创建一个源?)在实践中的所有位大小中,Fortran和C?主要的OSes上的原始数据类型
或者,至少就C类型而言,Fortran类型。
即用下列列填充表(开始时有几列):
OS ARCH Language Type Bits
Linu
我正在编写一个共享库,以便加载到JVM中,下面的行为使我陷入了困境。下面是我的Java类:
package com.test;
public class UnixUtil {
static {
System.loadLibrary("myfancylibrary");
}
static native int openReadOnlyFd(String path);
static native int closeFd(int fd);
}
public class Main {
public static void m
在Java代码中:
System.loadLibrary("twolib-second");
int z = add(1, 2);
public native int add(int x, int y);
first.cpp:
#include "first.h"
int first(int x, int y) {
return x + y; }
首先.h:
#ifndef FIRST_H
#define FIRST_H
extern int first(int x, int y);
#endif /* FIRST_H */
附
我对JNI很陌生。现在我有一个问题,我在C中有了我自己的简单库,我为我的c库创建了.so和.a库。
通过以下命令生成libmymath.so
gcc -shared -fPIC -o libmymath.so addnsub.o mulndiv.o
JNI.java
public class JNIPart
{
public native int addJNI(int a, int b);
public static void main(String args[])
{
JNIPart ja = new JNIPart();
int an
我对jni很陌生,我正在复习一个教程来实现一个简单的本地方法,但是我得到了一个无法满足的链接错误。据我所知,我完全遵循了教程中的步骤。请帮帮我。
以下是java包装器代码:
package com.cookbook.jni;
public class SquaredWrapper {
// Declare native method (and make it public to expose it directly)
public static native int squared(int base);
// Provide additional functiona
假设我有这样一个Java类:
public class Test
{
static { System.loadLibrary("test"); }
public native int foo();
}
假设foo()方法正在执行一些JNI调用,其中一个调用失败(IE抛出一个异常)。然后,我想从JNI代码返回,并在Java中抛出异常。例如:
jint Java_Test_foo(JNIEnv* env, jobject thiz)
{
jstring foobar = (*env)->N
我尝试获取Native class字段mInt中的值。该类是由SimpleJNI创建的。在此示例中,我将mInt值设置为9。JNI函数add尝试使用GetIntField获取mInt值。它应该在add函数中返回9。但是似乎GetIntfield在这个jobject中找不到这个字段。如何从JNI获取mInt?感谢您的评论。
以下是JNI源代码。
static jfieldID gNative;
static jint add(JNIEnv *env, jobject thiz, jint a, jint b) {
int result = a + b;
LOGI("%d
我正在尝试加载JNI库并运行下面的程序,但是我得到了下面的错误
Exception in thread "main" java.lang.UnsatisfiedLinkError: no JNIDemo
in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1865)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1122)
a
我正在尝试使用jni构建一个演示应用程序(我是新手)。我已经在谷歌上搜索过这个问题,但没有任何帮助。
下面是我使用的代码:
include $(CLEAR_VARS)
LOCAL_MODULE := example
LOCAL_SRC_FILES := com_example_example_Operacoes.c
include $(BUILD_SHARED_LIBRARY)
Operacoes.java包com.example.example;
public class Operacoes {
static {
System.loadLibrary("examp
我需要在JNI层中更改/分配java类对象的值。我是Java和JNI的新手。下面是我写的密码。
JNI_Test.java
public class JNI_Test {
enum Gender {
MALE,
FEMALE;
}
class StudentDetails {
int rollNum;
String studentName;
Gender gender;
}
class Students {
int studentsCount;
我有一个NDK共享库,我想对它做一些测试。目前,我使用googletest创建了一个链接到库的本地可执行文件,并按照README.NDK中的说明执行。好的。
现在,棘手的事情是共享库调用了许多JNIEnv实例的函数,例如:
env>NewStringUTF()
..。
问题是,Android本机可执行程序如何获得JNIEnv的实例?
一种方法是使用下面描述的调用API。
但是,我查看了NDK的jni.h,它似乎不允许使用这个API:
/*
* VM initialization functions.
*
* Note these are the only symbo