JNI library hívása C-ből

Fórumok

Van egy program amit javaban írtak és egy zárt forrású .so fájlból hívogat egy függvényt.
Szereném meghívni egyszer a megfelelő paraméterekkel. Javahoz buta vagyok, ezért úgy gondoltam, hogy inkább C-ből próbálkoznék. Van erre lehetőség? Ha igen a javas string típust milyen típussal helyettesítsem?

Hozzászólások

Az elején örültem mint majom a farkának, hogy a Freescale Codewarrior Linuxon nem eval módban fut, mert Wines testvérével ellentétben nem vágja arcomba minden indításnál, hogy mennyi időm van hátra. Erre ma beizzítanám a debuggert mire az elanyáz egy -valahány hibakóddal meg, hogy fatal error van. Előveszem a manuált, és biza az a lejárt licensz error. A faketime nem segített, reinstallnál tudja a rohadék, hogy már volt telepítve. (Nem rootként nem lehet telepíteni.) Szóval ideges lettem a rohadékra, és a telepítőben sikerrel megtaláltam az evallicenszgeneráló osztályt, amit jól vissza fejtettem. Na vagy javaban kellene írni hozzá egy pár soros frontendet vagy valami egyéb nyelven.

Azért az ilyenek súlyát ugye átérzi mindenki:


if(s4.equals("Linux_CWIDE_Limited"))
 s6 = CreateLicenseEntryPoint(licenseLocation, errorLocation, "0", s4, s5, s3);
else
 s6 = CreateLicenseEntryPoint(licenseLocation, errorLocation, licenseDuration, s4, s5, s3);

Nade sebaj legalább van egy jó pontja a javanak. :)

Ha lopott SW lenne, akkor nem problemazna. A SW csak azelott problemazik, hogy ellopnak, utana mar nem (epp ezert lopjak el, hogy ne problemazzon).
Az, hogy a forumtars segitseget kert a SW ellopasahoz, nem tudom miert zavar. Amugy sem lopas, hanem szerzoijog-sertes.

--
R2D2 a filmtörténet legmocskosabb szájú karaktere.
Minden szavát kisípolták.

A Metrowerks mint cég már megszűnt, megvették, feldarálták. Jelenlegi jogutóda a Freescale rég nem ad supportot ehhez a verzióhoz. Nekem annyira kellene, hogy egy szájbaszekszuált ubootot felreszeljek egy beágyazott retekre.

Azt már meg sem említem, hogy a szóbanforgó sw egy merényletkísérletnek ér fel a maga műfajában tcl/tk-ban gányolt használhatatlan GUIjával.

Az csak desszert, hogy a Freescaletől 500 USD-ért megvásárolt debugger egy hét után megáll meg mert kispórolnak belőle ESD diódákat.

De rágjátok nyugodtan a gumicsontot, végülis a hup erről szól.

Nekem pont egy eve kellett JNI-vel programoznom. Ugy remlik, hogy eleg konnyen lehet tutorial-okat talalni. ;)

Eljutottam nagy nehezen odaáig, hogy be tudom rántani a libet, illetve mindent ugyanúgy csinálok, ahogy a visszafejtett kódban van, és erre ezt tolja:


Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
	Cannot make a static reference to the non-static method CreateLicenseEntryPoint(String, String, String, String, String, String) from the type LicenseGenerator

A kód az így eddig nagyjából ennyi:


import java.io.*;
import java.util.*;

public class LicenseGenerator {
        native String CreateLicenseEntryPoint(String s, String s1, String s2, String s3, String s4, String s5);
	
	static 
	{
		System.loadLibrary("LicSupport");
	}

	public static void main(String[] args)
	{	
		Runtime.getRuntime().load(System.getProperty("user.dir") + "/libLicSupport.so");
		String ret = CreateLicenseEntryPoint("/home/mm/lic", "/tmp/err", "100", "Linux_PLUGINS_COMMON_ELINUX", "2.0", "Common Embedded Linux Plugins (Linux)");
		System.out.println(ret);
	}
}