Conversion d'un double C ++ * en un double Java

wurmi

Je suis aux prises avec un problème fondamental. .dllJ'essaye d' appeler une fonction de Java avec la signature suivante:

int function(double* a, double b);

Mon problème est que je ne sais pas comment utiliser le double* aparamètre en Java et comment imprimer la valeur manipulée une fois l'appel de fonction terminé.

WillShackleford

Je pense que pour le cas le plus simple de récupérer une sortie, utilisez un double [] de longueur 1.

C'était mon fichier java (usefunc.java):

public class usefunc {

    static {
        System.loadLibrary("usefunc");
    }
    public native int function(double a[], double b);

    public static void main(String args[]) {
        double a[] = new double[1];
        new usefunc().function(a,1.0);
        System.out.println("a[0] = " + a[0]);
    }
}

C'était mon fichier C ++ (usefunc.cpp):

#include <jni.h>

extern "C" {
    JNIEXPORT jint JNICALL Java_usefunc_function
    (JNIEnv *env, jobject obj, jdoubleArray a, jdouble b);
    int function(double *a, double b);
}

int function(double* a, double b) {
    *a = 77.7;
    return 0;
}

/*
 * Class:     usefunc
 * Method:    function
 * Signature: ([DD)I
 */
JNIEXPORT jint JNICALL Java_usefunc_function
(JNIEnv *env, jobject obj, jdoubleArray a, jdouble b) {
    jboolean iscopy;
    double *nativeA = env->GetDoubleArrayElements(a, &iscopy);
    jint ret = function(nativeA, b);
    env->ReleaseDoubleArrayElements(a, nativeA, 0);
    return ret;
}

Compilé avec:

 g++ -I /usr/local/jdk1.8.0_60/include/ -I /usr/local/jdk1.8.0_60/include/linux/ -shared usefunc.cpp  -o libusefunc.so
 javac usefunc.java

Ran avec:

 java usefunc

produit:

 a[0] = 77.7

Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.

En cas d'infraction, veuillez [email protected] Supprimer.

modifier le
0

laisse moi dire quelques mots

0commentaires
connexionAprès avoir participé à la revue

Articles connexes

Java: conversion d'un double en chaîne

Conversion d'un vecteur flottant en double

Conversion d'un double en un autre type numérique

Conversion d'un Eigen::VectorXd en un std::vector<double>

Conversion d'un texte d'édition en double Android

Conversion de double [] en octet [] à l'aide d'un flux en Java

Conversion d'un tableau [] d'octets (codé double java) en Float64

Conversion d'une paire de doubles en un double tableau

Conversion d'un RDD [(Int, Seq [Double])] en LabeledPoint

Conversion d'une chaîne en double avec un point

Conversion d'un tableau de pointeurs en double pointeur

Réponse différente lors de la conversion d'un Double en Int - Java vs .Net

Déterminer si un nombre est un double en Java

Hash un double en Java

Conversion d'un double en un entier en Javascript sans arrondi

Conversion d'un pointeur double int en un tableau 2D normal

Cython: Conversion d'un void * en double et rétro-conversion

Conversion d'un tableau de cellules de tableaux de chaînes en un tableau double

Conversion d'une entrée de TextField en un double nombre généré aléatoire [Java / JavaFX]

Lancez un [[[Double]]] en [Double]

Conversion d'un fichier JSON imbriqué avec des clés en double en dataframe en Python

À l'aide d'un double Comparator en Java

Comment arrondir un double à deux décimales en Java?

Supprimer les tuples en double d'un ArrayList - Java

Extraire un double d'une chaîne [] en Java?

impossible d'imprimer correctement un long double en C

Vecteur 2D C ++ - Convertir un entier en double

Définir un double en C ++ donne des nombres étranges

Utilisation du processeur double cœur avec un seul thread Java en cours d'exécution

TOP liste

  1. 1

    J'ai besoin de savoir si ces deux phrases sont les mêmes en programmation

  2. 2

    Javascript indiquant "impossible de définir la propriété 'innerHTML' sur null"

  3. 3

    Nextcloud avec Docker: impossible de créer ou d'écrire dans le répertoire de données

  4. 4

    La taille de la forme n'est pas égale à la taille de la cellule du tableau et ajuste le texte à l'intérieur de la forme

  5. 5

    Trouver l'intersection et l'union de deux rectangles

  6. 6

    Comment changer la couleur de la police dans R?

  7. 7

    Empêcher l'allocation de mémoire dans la génération de combinaison récursive

  8. 8

    Référencement des assemblys de structure .net 4.7 dans la solution .net core 2

  9. 9

    Compter combien de fois un nombre apparaît dans un tableau aléatoire

  10. 10

    Pourquoi utiliser Asyncio ne réduit pas le temps d'exécution global en Python et n'exécute pas les fonctions simultanément?

  11. 11

    Comment convertir une chaîne en tuple en utilisant `reads`?

  12. 12

    java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver

  13. 13

    comment afficher un bouton au-dessus d'un autre élément ?

  14. 14

    Création d'un nouvel objet d'une classe avec un nouveau nom en cliquant sur un bouton dans java swing

  15. 15

    comment supprimer "compte de connexion google" à des fins de développement - actions sur google

  16. 16

    Restauration de la sauvegarde de la base de données SQL Server sur la version inférieure

  17. 17

    Créer un graphique à barres avec une fréquence relative / à partir d'un objet de table dans R

  18. 18

    Création d'un rappel python pour une fonction C à partir d'une DLL avec un tampon char.

  19. 19

    java.lang.NoClassDefFoundError: org / springframework / data / repository / config / BootstrapMode

  20. 20

    comment le contrôle de tableau javascript devrait-il être

  21. 21

    impossible d'ouvrir un nouvel onglet dans react, ajoute localhost: 3000 sur le lien?

chaudétiquette

Archive