[LUGOS] Linux g++ ukaz!!!

Novak Dusan ITICMC d.novak at iskratel.si
Wed Aug 18 16:30:55 CEST 2004


Ojla,

Hvala za odgovor...
Morda sem napisal malenkost nerazumljivo...
Ko inicializiram, knjižnico s pomičjo native init() methode, dobim naslednji exception:

java.lang.UnsatisfiedLinkError: /Pegasus_IMS/spooflib.so: /Pegasus_IMS/spooflib.so: undefined symbol: _ZN4sapi18ApplicationIfDummy6createEv
        at java.lang.ClassLoader$NativeLibrary.load(Native Method)
        at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1560)
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1456)
        at java.lang.Runtime.load0(Runtime.java:737)
        at java.lang.System.load(System.java:811)
        atpegasus.simulation.ims.ue.stack.network.SniffSocket.<clinit>(SniffSocket.java:151)
        at pegasus.simulation.ims.ue.stack.network.UdpNetworkCentre.<init>(UdpNetworkCentre.java:142)
        at pegasus.simulation.ims.ue.stack.network.MessageCentre.<init>(MessageCentre.java:180)
        at pegasus.simulation.ims.ue.jain.protocol.ip.sip.SipProviderRouterImpl.<init>(SipProviderRouterImpl.java:175)
        at pegasus.simulation.ims.ue.jain.protocol.ip.sip.SipStackSingletonImpl.createSipProvider(SipStackSingletonImpl.java:242)
        at pegasus.simulation.ims.ue.jainuser.UserAgentProvider.<init>(UserAgentProvider.java:455)
        at pegasus.simulation.ims.ue.SipEngine.<init>(SipEngine.java:488)
        at pegasus.testProcedure.network.ims.cscf.TpStartServerStack.runTp(TpStartServerStack.java:147)
        at pegasus.testProcedure.TestProcedureExec.runTp(TestProcedureExec.java:335)
        at pegasus.testProcedure.TestProcedureExec.run(TestProcedureExec.java:197)
        at java.lang.Thread.run(Thread.java:534)


V tem trenutku uporabljam samo init() metodo ki naloži knjižnico.

Hvala že vnaprej..

Dušan


-----Original Message-----
From: Gregor Berginc [mailto:gregor.berginc at guest.arnes.si] 
Sent: Wednesday, August 18, 2004 4:26 PM
To: lugos-list at lugos.si
Subject: Re: [LUGOS] Linux g++ ukaz!!!

Novak Dusan ITICMC wrote:
> Pozdravljeni,
> 
> Želel bi obstoječo *.so statično knjižnico povezati s tremi *.a knjižnicami...
> 
> Spodaj prilagam skripto.
> 
> #!/bin/sh
> 
> g++ -O2 -o spooflib.so -shared -lSigComp -lpm_stub -lstats_stub -L. 
> -lpthread -lipq -I/usr/java/j2sdk1.4.2_04/include 
> -I/usr/java/j2sdk1.4.2_04/include/linux Netlink.cpp tcp.cpp udp.cpp 
> TCPBaseThread.cpp UDPBaseThread.cpp spoofit.cpp Packet.cpp 
> BaseThread.cpp -static
> 
> Težava ni pri linkanju, ampak ko poskušam z javo aplikacijo preko JNI-ja 
> dostopati do funkcij v eni izmed treh SigComp, lpm_stub ali lstats_stub 
> dobim že pri JNI init() metodi napako, ki pravi, da ne more najti ene 
> izmed uporabljenih funkcij...

Ali si preveril, ce se System.loadLibrary("spooflib"); uspesno izvede. 
Ce ti JVM knjiznico najde, potem je naceloma lahko problem samo v tem, 
da v knjiznici funkcija s popolnoma enakim signaturjem kot si ga dolocil 
v javi ne obstaja. Ce se ti da, potem napisi naslednje stvari:

1. definicijo javanske native funkcije (tiste, ki ti je ne najde)

2. definicijo funkcije v headerju (iste funkcije, ki ti jo je jni generiral)

Seveda lahko dodas se podrobnejse sporocilo o napaki.

Ce bo v tistem kaj narobe, se ti oglasim nazaj.

lp,
Grega





More information about the lugos-list mailing list