Mobility GPS plugin -- Fail to load custom library

Frameworks frameworks at qlands.com
Thu Jun 9 14:10:15 CEST 2011


Ha! That was it! How embarrassing! :-[

Thanks!

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

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.kde.org/pipermail/necessitas-devel/attachments/20110609/84357d62/attachment-0001.htm 


More information about the Necessitas-devel mailing list