<html><body><div style="color:#000; background-color:#fff; font-family:times new roman, new york, times, serif;font-size:12pt"><div>Hi,<br></div><div><br></div><div>AFAIK you are not allowed to load libs from sdcard, try pushing your library to phone memory (e.g. /data/local )</div><div><br></div><div>BogDan.<br></div><div><br>&gt;<br>&gt;<br>&gt;Hi,<br>&gt;<br>&gt;I pulled the experimental branch (2011-06-09) but I still cannot load<br>my testing GPS library:<br>&gt;<br>&gt;...<br>&gt;D/dalvikvm(&nbsp; 408): Trying to load lib<br>/data/local/qt/plugins/platforms/android/libandroid-8.so 0x44ede2c0<br>&gt;D/dalvikvm(&nbsp; 408): Added shared lib<br>/data/local/qt/plugins/platforms/android/libandroid-8.so 0x44ede2c0<br>&gt;I/Qt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (&nbsp; 408): qt start<br>&gt;D/dalvikvm(&nbsp; 408): Trying to load lib<br>/mnt/sdcard/Android/data/org.ilri.GPSTest/libGPSInterface.so<br>0x44ede2c0<br>&gt;I/dalvikvm(&nbsp; 408): Unable to
 dlopen(/mnt/sdcard/Android/data/org.ilri.GPSTest/libGPSInterface.so):<br>Cannot load library: load_segments[907]: 33 failed to map segment from 'libGPSInterface.so'<br>@ 0x81900000 (0x00003470). p_vaddr=0x00000000 p_offset=0x00000000<br>&gt;....<br>&gt;<br>&gt;<br>&gt;I though It was because I was not defining the PRO in the right way..<br>Here is the pro that builds the library:<br>&gt;<br>&gt;# -------------------------------------------------<br>&gt;# Project created by QtCreator 2010-04-30T11:56:42<br>&gt;# -------------------------------------------------<br>&gt;QT += sql<br>&gt;TARGET = GPSInterface<br>&gt;CONFIG += qt plugin dll<br>&gt;<br>&gt;TEMPLATE = lib<br>&gt;<br>&gt;DEFINES = QT_STATICPLUGIN<br>&gt;<br>&gt;SOURCES += \ <br>&gt;&nbsp;&nbsp;&nbsp; ../../interfaces.cpp<br>&gt;HEADERS += ../../interfaces.h<br>&gt;#DestDir is on my linux system then I copy the so into the virtual SD<br>Card<br>&gt;DESTDIR =
 /mnt/sdcard/Android/data/org.ilri.GPSTest<br>&gt;<br>&gt;I added the code the tries to load my library into QTApplication.java<br>just after loading the QT libraries:<br>&gt;...<br>&gt;try<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; File str;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String storage;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; str = Environment.getExternalStorageDirectory();<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; storage = str.getAbsolutePath();<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; File f = new File(storage+"/Android/data/org.ilri.GPSTest/libGPSInterface.so");<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if
 (f.exists())<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.load(storage+"/Android/data/org.ilri.GPSTest/libGPSInterface.so");<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch (SecurityException e)<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Log.i(QtTAG, "Security: Can't load&nbsp;libGPSInterface.so",<br>e);<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch (UnsatisfiedLinkError e)<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Log.i(QtTAG, "Link: Can't load libGPSInterface.so",<br>e);<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&gt;...<br>&gt;<br>&gt;Any idea what do I need to do or doing
 wrong?<br>&gt;<br>&gt;Many thanks,<br>&gt;Carlos.<br>&gt;<br>&gt;On 06/03/2011 05:51 PM, BogDan wrote: <br>&gt;Done, please pull "experimental" branch of android-qt<br>(android-lighthouse) repo !<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt;Cheers,<br>&gt;&gt;BogDan.<br>&gt;&gt;<br>&gt;&gt;&gt;________________________________<br>&gt;&gt;&gt;From: Frameworks &lt;frameworks@qlands.com&gt;<br>&gt;&gt;&gt;To: "necessitas-devel@kde.org" &lt;necessitas-devel@kde.org&gt;<br>&gt;&gt;&gt;Sent: Friday, June 3, 2011 5:43 PM<br>&gt;&gt;&gt;Subject: Mobility GPS plugin -- Fail to load custom library<br>&gt;&gt;&gt;<br>&gt;&gt;&gt;<br>&gt;&gt;&gt;Hi,<br>&gt;&gt;&gt;<br>&gt;&gt;&gt;This is Carlos Quiros.<br>&gt;&gt;&gt;<br>&gt;&gt;&gt;I am working on a mobility GPS plugin. For this I am playing around<br>&gt;&gt;loading libraries. I created the library with the same Necessitas QT<br>&gt;&gt;creator that I use in the testing example. So I create this library
 libIMPInterface.so. This has the following pro:<br>&gt;&gt;&gt;<br>&gt;&gt;&gt;QT += sql<br>&gt;&gt;&gt;TARGET = $$qtLibraryTarget(Interface)<br>&gt;&gt;&gt;TEMPLATE = lib<br>&gt;&gt;&gt;SOURCES += \ <br>&gt;&gt;&gt;&nbsp;&nbsp;&nbsp; ../../interfaces.cpp<br>&gt;&gt;&gt;HEADERS += ../../interfaces.h<br>&gt;&gt;&gt;INCLUDEPATH += ../../ <br>&gt;&gt;&gt;DESTDIR = /sdcard/Android/data/org.ilri.GPSTest<br>&gt;&gt;&gt;<br>&gt;&gt;&gt;<br>&gt;&gt;&gt;Note:<br>&gt;&gt;&gt;DESTDIR for now is fixed... Because is a test<br>&gt;&gt;&gt;<br>&gt;&gt;&gt;I saw that QApplication.java load the QT libraries using:<br>System.load(libraries[i])&nbsp; So as an example I added my custom library<br>like:<br>&gt;&gt;&gt;<br>&gt;&gt;&gt;try<br>&gt;&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&gt;&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&gt;&gt;System.load("/sdcard/Android/data/org.ilri.GPSTest/libInterface.so");<br>&gt;&gt;//This
 is fix... I am just testing loading my GPS library!<br>&gt;&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&gt;&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch (SecurityException e)<br>&gt;&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&gt;&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Log.i(QtTAG, "Can't load '" + "'", e);<br>&gt;&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&gt;&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch (Exception e)<br>&gt;&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&gt;&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Log.i(QtTAG, "Can't load '" + "'", e);<br>&gt;&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&gt;&gt;&gt;<br>&gt;&gt;&gt;But I am getting the following error:<br>&gt;&gt;&gt;<br>&gt;&gt;&gt;D/dalvikvm(&nbsp; 292): Trying to load lib<br>&gt;&gt;/sdcard/Android/data/org.ilri.GPSTest/libInterface.so
 0x44edea38<br>&gt;&gt;&gt;I/dalvikvm(&nbsp; 292): Unable to<br>&gt;&gt;dlopen(/sdcard/Android/data/org.ilri.GPSTest/libInterface.so): Cannot<br>&gt;&gt;load library: load_segments[907]: 33 failed to map segment from<br>&gt;&gt;'libInterface.so' @ 0x80b00000 (0x00003e28). p_vaddr=0x00000000<br>&gt;&gt;p_offset=0x00000000<br>&gt;&gt;&gt;<br>&gt;&gt;&gt;And then of course I get:<br>&gt;&gt;&gt;<br>&gt;&gt;&gt;E/AndroidRuntime(&nbsp; 292): java.lang.UnsatisfiedLinkError: Library<br>&gt;&gt;/sdcard/Android/data/org.ilri.IMPACTLight/libIMPInterface.so not found<br>&gt;&gt;&gt;<br>&gt;&gt;&gt;<br>&gt;&gt;&gt;Any idea what I am doing wrong? Do the libraries need to have any<br>&gt;&gt;special signature/form for the Dalvik VM to load them? Or I cannot use<br>&gt;&gt;Necessitas QT creator to make libraries?<br>&gt;&gt;&gt;<br>&gt;&gt;&gt;Many thanks guys and
 girls!<br>&gt;&gt;&gt;<br>&gt;&gt;&gt;Carlos.<br>&gt;&gt;&gt;<br>&gt;&gt;&gt;_______________________________________________<br>&gt;&gt;&gt;Necessitas-devel mailing list<br>&gt;&gt;&gt;Necessitas-devel@kde.org<br>&gt;&gt;&gt;<a target="_blank" href="https://mail.kde.org/mailman/listinfo/necessitas-devel">https://mail.kde.org/mailman/listinfo/necessitas-devel</a><br>&gt;&gt;&gt;<br>&gt;&gt;&gt;<br>&gt;&gt;&gt;<br>&gt;<br>&gt;_______________________________________________<br>&gt;Necessitas-devel mailing list<br>&gt;Necessitas-devel@kde.org<br>&gt;<a target="_blank" href="https://mail.kde.org/mailman/listinfo/necessitas-devel">https://mail.kde.org/mailman/listinfo/necessitas-devel</a><br>&gt;<br>&gt;<br>&gt;</div></div></body></html>