He estado viendo este foro y me di cuenta que es fantástico en lo que concierne a programación, y ahora tengo una duda acerca de un proyecto en java que estoy desarrollando.
Cabe mencionar que me voy iniciando en este mundo, por lo que estoy abierto a cualquier consejo, corrección , ejemplos, etc.
Estoy haciendo un proyecto en java bastante sencillo, en el cual se utiliza la interface nativa llamando a una DLL creada en c, usando la herramienta javah. Dentro de el Main de la DLL nos piden leer una archivo de texto; y al llamarla en Java que lo muestre dentro de un TextField, TextArea o semejante al presionar un botón. No se si me explico.
En resumen: Lo que se desea es que dentro del DLL este un codigo para leer un archivo de texto, y al llamar en java la DLL lo muestre en un Text Area al presionar un botón.
El problema que tengo es que me ejecuta el código, pero me lo muestra en la consola de java. Y lo que quiero es que se vea en modo gráfico.
Les muestro lo programado en Java con ayuda de Netbeans:
Código:
package textos;
/**
* @author Salvador
*/
public class Textos {
public native void Leer();
static {
System.load("C:\\Users\\Salvador\\Documents\\NetBeansProjects\\Textos\\src\\Dll\\Archivo.dll");
}
public static void main(String[] args) {
new Textos().Leer();
}
}
Y ahora el codigo dentro del archivo de cabecera:
Código:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class textos_Textos */
#ifndef _Included_textos_Textos
#define _Included_textos_Textos
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: textos_Textos
* Method: Leer
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_textos_Textos_Leer
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
El codigo dentro del DLL:
Código:
/* Replace "dll.h" with the name of your header */
#include "Textos_textos.h"
#include <windows.h>
#include <stdio.h> //Con la modificacion el archivo ya es leido
#include<conio.h>
#include<iostream>
#include<stdlib.h>
#include <fstream>
using namespace std;
JNIEXPORT void JNICALL Java_textos_Textos_Leer
(JNIEnv *, jobject){
FILE *archivo;
char caracter[256];
if ((archivo = fopen("C:\\Evidencias.txt", "rb")) == NULL)
{
fprintf(stderr, "No se puede abrir el archivo.\n");
exit(1);
}
while(!feof(archivo))
{
fread(&caracter,sizeof(caracter),1,archivo); //lee cadena de caracteres
cout<<caracter;
}
fclose(archivo);
}
BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved)
{
switch(fdwReason)
{
case DLL_PROCESS_ATTACH:
{
break;
}
case DLL_PROCESS_DETACH:
{
break;
}
case DLL_THREAD_ATTACH:
{
break;
}
case DLL_THREAD_DETACH:
{
break;
}
}
/* Return TRUE on success, FALSE on failure */
return TRUE;
}
No se si me puedan ayudar o dar algun consejo para salir de este paso, es un proyecto escolar. Les adjunto el proyecto tambien:
https://mega.nz/#!w1NkFTiR!Fn42jvGYdgByBCKE1SrIrPmPxs8HWhxlzfakkiolpPE
Muchas gracias. Saludos