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?
- 5242 megtekintés
Hozzászólások
jesszus, mit találtál?
- A hozzászóláshoz be kell jelentkezni
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. :)
- A hozzászóláshoz be kell jelentkezni
"rohadék"
Szoval problemazik a rohadek lopott szoftver.
----------------------
while (!sleep) sheep++;
- A hozzászóláshoz be kell jelentkezni
Ezt nem értem honnan szedted.
- A hozzászóláshoz be kell jelentkezni
Lopott? Mikor is lopta el? A héten bent volt Miki melóban, szóval nem törhetett be a Freescale-hez külföldön...
- A hozzászóláshoz be kell jelentkezni
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 hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
Ha tudok jönni, jövőhéten megreszeljük.
- A hozzászóláshoz be kell jelentkezni
Már sikerült meghegeszteni. :)
A kölöknek meg jobbulást!
- A hozzászóláshoz be kell jelentkezni
Már többesszám... :-(
Szóval örülök hogy sikerült, mert tuti nem jövök.
- A hozzászóláshoz be kell jelentkezni
Szori, mellelottem. :) Egyebkent a helyedben megneznem a Java forrast, es onnan (ugyanugy) hivnam meg, kevesebb szivasnak tunik.
----------------------
while (!sleep) sheep++;
- A hozzászóláshoz be kell jelentkezni
No problemo, ez lett a megoldás. Természetesen meg van fűszerezve azzal, hogy 32 bites a lib, de ezen hamar túltettem magam.
- A hozzászóláshoz be kell jelentkezni
Mivel elég kis kódrész van kint.....
Ha már megvan a visszafordított Java kód, vissza(le)fordítás ugyan azt a "kódot" adja, mint az eredeti?
Mert ha igen, mi lenne, ha kivágnád az egész licences mizériát?
- A hozzászóláshoz be kell jelentkezni
Maga a program nem javas, csak a telepítője ami eval licenszet generál 30 napra. Az viszont úgyvan kitalálva, hogy lehet vele végtelen +1 napnyi licenszet generálni.
- A hozzászóláshoz be kell jelentkezni
Nekem pont egy eve kellett JNI-vel programoznom. Ugy remlik, hogy eleg konnyen lehet tutorial-okat talalni. ;)
- A hozzászóláshoz be kell jelentkezni
Nem JNI-vel akarok programolni, hanem valami emberi nyelvből (C, C++) használni JNI-s libraryt, amelyben a metódusoknak javas String típusú paraméterei vannak. Amúgy lassan tárgytalanná válik, mivel lassan már meghegesztem javaban.
- A hozzászóláshoz be kell jelentkezni
Epp ezert mondtam. Ertelmesebb Java-ban megirni.
Illetve ezekben szokott szo lenni arrol is, hogy hogyan kell Java tipusokat hasznalni mas nyelvekben. Elvegre maga a JNI-s library is C-ben irodott. ;)
- A hozzászóláshoz be kell jelentkezni
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);
}
}
- A hozzászóláshoz be kell jelentkezni
Elég nyilvánvaló a hibaüzenet, csak el kell olvasni :)
Vagy legyen a native is static, vagy példányosíts, static-ból nem lehet nem static-ot hívni.
- A hozzászóláshoz be kell jelentkezni
Ha megnezed, main static, tehat a native metodusnak is static-nak kene lennie.
- A hozzászóláshoz be kell jelentkezni
native static String CreateLicenseEntryPoint(...)
mivel a LicenceGeneratort nem példányosítod.
http://cesjava.freeblog.hu/archives/2009/10/01/Java_Native_Interface/
- A hozzászóláshoz be kell jelentkezni