<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html; charset=ISO-8859-1"
 http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Ha! That was it! How embarrassing!&nbsp;<span class="moz-smiley-s6"><span>
:-[ </span></span><br>
<br>
Thanks!<br>
<br>
On 06/09/2011 02:21 PM, BogDan wrote:
<blockquote cite="mid:950810.21146.qm@web121405.mail.ne1.yahoo.com"
 type="cite">
  <div
 style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); 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 <a class="moz-txt-link-rfc2396E" href="mailto:frameworks@qlands.com">&lt;frameworks@qlands.com&gt;</a><br>
&gt;&gt;&gt;To: <a class="moz-txt-link-rfc2396E" href="mailto:necessitas-devel@kde.org">"necessitas-devel@kde.org"</a>
<a class="moz-txt-link-rfc2396E" href="mailto:necessitas-devel@kde.org">&lt;necessitas-devel@kde.org&gt;</a><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;<a class="moz-txt-link-abbreviated" href="mailto:Necessitas-devel@kde.org">Necessitas-devel@kde.org</a><br>
&gt;&gt;&gt;<a moz-do-not-send="true" 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;<a class="moz-txt-link-abbreviated" href="mailto:Necessitas-devel@kde.org">Necessitas-devel@kde.org</a><br>
&gt;<a moz-do-not-send="true" 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>
</blockquote>
<br>
</body>
</html>