Java JNI - C - přenos struktury – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Java JNI - C - přenos struktury – C / C++ – Fórum – Programujte.comJava JNI - C - přenos struktury – C / C++ – Fórum – Programujte.com

 

NotBegineer
~ Anonymní uživatel
3 příspěvky
6. 6. 2013   #1
-
0
-

Ahojte hraji si s přenosem struktury mezi Javou a čistě Cčkem přes *.dll. Potřebuji pomoci jestli někdo ví k úpravou kódu v Cčku. Nejsem Cčkař a potřebuji pomoci s zdrojem v cčku. Nevím jak přenést strukturu(objekt) do dane metody. Neboli jak dostat do "testObjekt1" celý objekt "objTriHodnot". Kód této primitivni metody jenz ma navratovy typ int ma provést pouhe secteni těch tří čísel. ( je to jenom testovací příklad k pochopení problematiky ). Problém u druhé metody je identicky ovšem v tomto případě je navratový typ struktura(objekt), jejiž cisla se zvysi o +1. Díky, jestli to někdo bude vědět.

public class HlavniTrida {
	private static class testTrida {
		int cislo1,cislo2,cislo3;
		testTrida(int cis1,int cis2,int cis3){ // konstruktor
			this.cislo1=cis1;this.cislo2=cis2;this.cislo3=cis3;	}	}
	native static int vstupObjekt(testTrida objekt);
	native static testTrida vstupVystupObjekt(testTrida objekt);
	public static void main(String [] args) {
		testTrida testObjekt1 = new testTrida(10,11,12);
		testTrida testObjekt2 = new testTrida(100,101,102);
		
	}
}

Zde je header : HlavniTrida_testTrida 

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class HlavniTrida_testTrida */

#ifndef _Included_HlavniTrida_testTrida
#define _Included_HlavniTrida_testTrida
#ifdef __cplusplus
extern "C" {
#endif
#ifdef __cplusplus
}
#endif
#endif

A zde je header : HlavniTrida :  

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
#include "HlavniTrida_testTrida.h"
/* Header for class HlavniTrida */

#ifndef _Included_HlavniTrida
#define _Included_HlavniTrida
#ifdef __cplusplus
extern "C" {
#endif

/*
 * Class:     HlavniTrida
 * Method:    vstupObjekt
 * Signature: (LHlavniTrida/testTrida;)I
 */
JNIEXPORT jint JNICALL Java_HlavniTrida_vstupObjekt
  (JNIEnv *, jclass, jobject);

/*
 * Class:     HlavniTrida
 * Method:    vstupVystupObjekt
 * Signature: (LHlavniTrida/testTrida;)LHlavniTrida/testTrida;
 */
JNIEXPORT jobject JNICALL Java_HlavniTrida_vstupVystupObjekt
  (JNIEnv *, jclass, jobject);

#ifdef __cplusplus
}
#endif
#endif

A zde je zdroják HlavniTrida.c 

#include <jni.h>
#include <stdio.h>
#include "HlavniTrida.h"
#include "HlavniTrida_testTrida.h"
typedef struct _MyStruct {
  int cis1;
  int cis2;
  int cis3;
} ObjektTest;

JNIEXPORT jint JNICALL Java_HlavniTrida_vstupObjekt (JNIEnv *env, jobject obj, jobject objTriHodnot) {
	ObjektTest testObjekt1;

}

JNIEXPORT jobject JNICALL Java_HlavniTrida_vstupVystupObjekt (JNIEnv *env, jclass obj, jobject objektTriHodnot){
	ObjektTest testObjekt2;
}
Nahlásit jako SPAM
IP: 86.49.87.–
NotBegineer
~ Anonymní uživatel
3 příspěvky
6. 6. 2013   #2
-
0
-

Oprava nějak se tam nedostal celý zdroják v *.c 

#include <jni.h>
#include <stdio.h>
#include "HlavniTrida.h"
#include "HlavniTrida_testTrida.h"
typedef struct _MyStruct {
  int cis1;
  int cis2;
  int cis3;
} ObjektTest;

JNIEXPORT jint JNICALL Java_HlavniTrida_vstupObjekt (JNIEnv *env, jobject obj, jobject objTriHodnot) {
	ObjektTest testObjekt1;

}

JNIEXPORT jobject JNICALL Java_HlavniTrida_vstupVystupObjekt (JNIEnv *env, jclass obj, jobject objektTriHodnot){
	ObjektTest testObjekt2;
}
Nahlásit jako SPAM
IP: 86.49.87.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 19 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý