标签: java-native-interface

在WinAPI调用一个好的char*之后获取GetLastError()结果的最佳方法是什么?

我正在编写一个DLL程序,java程序用它以各种方式调用WinAPI.我想将适当的异常抛回java,但我需要一个很好的格式化WinAPI错误,而不仅仅是从GetLastError()返回的int.我确信这是一个很好的方法.

java windows java-native-interface winapi

0
推荐指数
1
解决办法
608
查看次数

0
推荐指数
1
解决办法
470
查看次数

C近似函数

我正在为Java中的exp,log和sqrt做一些近似函数.关于指针如何工作我有点生疏 - 这个语法是否正确?

#include <math.h>
#include "QDMath.h"

JNIEXPORT jdouble JNICALL Java_QDMath_exp
  (JNIEnv *env, jclass class, jdouble val)
{
    jint tmp = (jint) (1512775 * val + 1072632447);
    jdouble p = 0.0;
    *(1 + (jint * ) &p) = tmp;
    return p;
}

JNIEXPORT jdouble JNICALL Java_QDMath_log
  (JNIEnv *env, jclass class, jdouble val)
{
    jint tmp = (*(1 + (jint *) &val));
    jdouble p = ((jdouble) tmp - 1072632447) / 1512775;
    return p;
}

JNIEXPORT jdouble JNICALL Java_QDMath_sqrt
  (JNIEnv *env, jclass …
Run Code Online (Sandbox Code Playgroud)

c java java-native-interface

0
推荐指数
1
解决办法
212
查看次数

如何在Java代码中使用OpenMP?

我有一个Java项目,我必须通过OpenMP技术实现并行化(也就是说,我必须以某种方式在C/C++和Java之间建立桥梁).到目前为止,我被告知使用JNI在Java中集成C/C++代码,但是,我也建议使用JaMP代替.我对这些技术/框架知之甚少,所以我的问题是,使用起来不那么痛苦,而且,一般来说,我如何在Java代码中实现OpenMP?我是否可以仅使用Java线程(不使用OpenMP)实现相同的功能?我是这个领域的初学者,所以绝对非常感谢任何帮助.

提示:该项目是建立一个协作图形编辑器,通过将一个核心"放"到服务器和客户端之间的交互,并"将"放到另一个核心上进行有效的图形处理.

c java java-native-interface openmp

0
推荐指数
1
解决办法
918
查看次数

哪个应该用于iOS开发,哪个C库是Java版本?

我正在开发一个iPhone项目,并希望使用我在java和C中找到的开源库.目前我只在iPhone上工作,但后来我也计划移植到其他平台.它是一个客户端 - 服务器应用程序,其中服务器已经基于java.

我想要做的是在objective-c中设计iPhone UI,它与基于java或基于C的客户端库进行通信.

据我所知,基于Java的库仍然是我的最佳选择,因为它是跨平台的,但是Objective-c和Java通信呢?是否有可能使用JNI,并且开发需要比C更长的时间,以及什么是软件效率?我应该选择哪个基于C或java的库,还要考虑快速开发生命周期吗?

通过谷歌搜索,我了解到使用"Java桥"可以实现Java和Objecive-c通信,但我读了另一篇文章,其中说苹果限制在Mac OS X 10.4及更高版本中使用"java bridge"......

鉴于该信息,我应该使用哪个版本的库?

java iphone java-native-interface objective-c

0
推荐指数
1
解决办法
1065
查看次数

从C到JNI调用Java方法时出现异常NOSUCHMETHODERROR

我在使用JNI在Java和C之间共享流时遇到问题.我试图从C调用Java方法,但是nosuchmethodfound当我想要获取时,我得到了一个异常GetObjectMethodID.

C代码:

jclass cls = (*env)->GetObjectClass(env, obj);
jmethodID aMethodID = (*env)->GetMethodID(env, cls, "callbackmethod", "(I)V");
if (aMethodID == 0) { 
    log("Unable to get methodID"); //Always getting aMethodID as 0
}
int myvar = 7;
(*env)->CallVoidMethod(env, obj, aMethodID, myvar);
Run Code Online (Sandbox Code Playgroud)

Java代码:

public class myclass extends activity {
    private void callbackmethod(int i) {
        Log.d("Tag", "In Java code");
    }

    -------
    more code
}
Run Code Online (Sandbox Code Playgroud)

现在我总是收到错误Ljava/lang/NoSuchMethodError;: callbackmethod.

一切都很好,但我的代码不起作用.问题是什么?

java java-native-interface android android-ndk

0
推荐指数
1
解决办法
6172
查看次数

C和Java通过Jni

我正在尝试从S调用java代码.此方法调用:


cls = (* env) -> FindClass (env, "org / libsdl / app / SDLActivity");
mid = (* env) -> GetStaticMethodID (env, cls, "play",
"([Ljava / lang / String;) V");
(* env) -> CallVoidMethod (env, cls, mid);
Run Code Online (Sandbox Code Playgroud)

java方法:


public static void play () {
track.write (bytes, 0, bytes.length);
}
Run Code Online (Sandbox Code Playgroud)

导致此错误:

03-25 18:17:32.313:WARN/dalvikvm(655):JNI警告:JNI方法调用异常引发03-25 18:17:32.313:WARN/dalvikvm(655):在Lorg/libsdl/app/SDLActivity中; .main(ILjava/lang/String; [I(GetByteArrayElements)03-25 18:17:32.313:WARN/dalvikvm(655):待处理的异常是:03-25 18:17:32.323:INFO/dalvikvm(655):Ljava/lang/NoSuchMethodError;:玩

找到类,但找不到方法有什么问题?怎么决定?

c java methods java-native-interface

0
推荐指数
1
解决办法
2436
查看次数

运行使用MinGW构建的可执行文件时,错过msvcr100.dll错误

我正在成功编译(使用MinGW)并运行我的C++程序(通过JNI调用Java类),该程序由Win7-64bit系统上的多个文件组成.编译和运行由2个批处理文件完成.我不久前安装了Visual Studio C++ 2010,但从那以后就没用过它.

我现在正在尝试将此程序部署到另一台运行WinXP-32bit的计算机上,并且我面临"缺少msvcr100.dll"错误.我安装了最新的MinGW和JDK,我使用相同的批处理文件编译了我的程序,但是当我运行它时,我收到错误.Visual Studio没有在建筑的任何部分使用(我不希望它),所以我觉得很奇怪,我收到有关MSVC++ DLL的消息.

的compile.bat

rem Set the include paths for the JNI header files("include" and "include\win32" inside the jdk (32-bit) directory).
set JDK_INCLUDE="C:\Program Files\Java\jdk1.7.0\include"
set JDK_INCLUDE_WIN32="C:\Program Files\Java\jdk1.7.0\include\win32"

set PATH=%PATH%;C:\MinGW\bin

rem Build an import library for the jvm.dll from the .\lib\jvm.def file (see http://www.inonit.com/cygwin/jni/invocationApi/archive.html)
dlltool --input-def .\lib\jvm.def --kill-at --dllname jvm.dll --output-lib .\lib\libjvm.dll.a

rem Set the import library directory.
set JVM_IMPORT_DLL=".\lib"

rem Compile all files (including the IngToolTest.cpp) and create an executable file .\bin\COFORM_JNI.exe
g++ -I%JDK_INCLUDE% -I%JDK_INCLUDE_WIN32% .\src\DataTypes\file1.cpp …
Run Code Online (Sandbox Code Playgroud)

c++ java-native-interface mingw

0
推荐指数
1
解决办法
4102
查看次数

如何在Android开发中将jchar转换为JNi中的char?

我想在JNI中将jchar数组转换为char数组?我该怎么做:

JNI代码片段:

jcharArray arr = (jcharArray) (*env)->CallObjectMethod(env, obj, mid);
int count = (*env)->GetArrayLength(env, arr);
jchar* chars = (*env)->GetCharArrayElements(env, arr, 0);

char reg_chal= chars[1];
Run Code Online (Sandbox Code Playgroud)

char reg_chal = chars [1]语句将垃圾值插入reg_chal.如何解决此问题.提前致谢.

java java-native-interface android

0
推荐指数
1
解决办法
8479
查看次数

Android JNI字符串问题

JAVA_CODE:

 public class Employee {
        private int age;
        private String name;

        public Employee(int age, String name) {
            this.age  = age;
            this.setName(name);
        }
        public int getAge() {
            return this.age;
        }
        public void setAge(int age) {
                this.age = age;
        }
        public String getName() {
            return this.name;
        }
        public void setName(String name) {
            this.name = name; 
        }
    }
Run Code Online (Sandbox Code Playgroud)

C结构:

typedef struct Employee_s {
   int age;
   char name[200];
}Employee_t;
Run Code Online (Sandbox Code Playgroud)

JNI代码看:

jint
Java_com_example_cloudonlibtest_CloudOnLibTestActivity_second( JNIEnv* env,
                                                  jobject this, jobject employeeObject)
{
    Employee_t em;
    em.age =418;
    strcpy(em.name, …
Run Code Online (Sandbox Code Playgroud)

c java java-native-interface android

0
推荐指数
1
解决办法
4088
查看次数