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