C/Visual C - JNI me está quitando años de vida

 
Vista:

JNI me está quitando años de vida

Publicado por Jordi (2 intervenciones) el 18/11/2017 02:37:46
Llevo 3 horas + 2 de ayer intentando compilar el mítico HolaMundo.dll (shared library echa en C) para poder ejecutarlo en un método nativo de java. Tengo la cabecera e implementación del método echo con el IDE CLion, pero no me reconoce los tipos que usan los métodos. Al parecer tengo que vincular "jni.h" del jdk con mi proyecto, más que al parecer, CLion lo dice bastante claro, jni.h no se reconoce. Por lo que he visto, de esto se encarga CMaker, pero no me aclaro. He estado horas buscando y probando pero nada. Alguien sabe como puedo hacerlo? No os haceis una idea de la frustración que me está causando no poder compilar por algo que debería ser tan sencillo como vincular unas librerías.
Os dejo el código por si ayuda en algo:
El header:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class HelloWorld */
 
#ifndef _Included_HelloWorld
#define _Included_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     HelloWorld
 * Method:    talk
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_HelloWorld_talk
  (JNIEnv *, jobject);
 
#ifdef __cplusplus
}
#endif
#endif
La implemetación:
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <jni.h>
#include "HelloWorld.h"
 
using namespace std;
 
JNIEXPORT void JNICALL
Java_HelloWorld_displayHelloWorld(JNIEnv *env, jobject obj)
{
    cout << "Hi Again World!" << endl;
}
Mi intento de arreglar el problema con CMaker:
1
2
3
4
5
6
7
8
9
cmake_minimum_required(VERSION 3.8)
project(untitled2)
 
set(CMAKE_CXX_STANDARD 11)
 
link_directories(C:/Users/pakoco/CLionProjects/untitled2 %JAVA_HOME%)
 
set(SOURCE_FILES HelloWorld.h)
add_library(untitled2 SHARED ${SOURCE_FILES})
Os agradecería increiblemente cualquier tipo de ayuda, aunque sea una pista de que estoy haciendo mal.
Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

JNI me está quitando años de vida

Publicado por Tom (619 intervenciones) el 18/11/2017 12:10:13
Es lo que tiene meterse en danzas con muy poca experiencia previa.
Te recomiendo que intentes compilar "a mano" (la parte en c) y comentes los errores que se producen.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar