Avatar billede tesd Nybegynder
29. april 2003 - 11:30 Der er 12 kommentarer og
1 løsning

JNi kan ikke køre asynkron funktion i c++

Jeg har lavet et jni, og en c++ programm, da vores c++ program er lavet til Symbian styresystemet, er der benyttelse af asynkrone kald i et specifikt objekt, når vi opretter dette objekt i c++, går vores applikation ned. Er der nogen mulighed for at det kan lade sig gøre at køre noget asynkront i et jni, eller er det en i forvejen umulig opgave.
Avatar billede arne_v Ekspert
29. april 2003 - 11:55 #1
Nu kender jeg ikke noget til Symbian.

Men et gæt (baseret på lignende problem-stillinger) vil være
at et C++ main program sætter forskellige ting op, som et
Java main program ikke gør, og C++ koden kaldt via JNI
fejler fordi det den forventer er sat op ikke er sat op.
Avatar billede tesd Nybegynder
29. april 2003 - 11:59 #2
Øhh det ved jeg ikke lige helt hvad jeg skal svare på. Vores c++ proramm virker fint uden jni...men når jni sættes til...eller vi kompiler og linker det til en dll, så er der problemer. Hvis det virker uden jni hvorfor virker det så ikke med...der er jo ikke den store foreskel....
Avatar billede arne_v Ekspert
29. april 2003 - 12:15 #3
Min hypotese er:

C++ app
  C++ opstarts kode
      initialiser global variable
  C++ main
      X
          objekt
                bruger globale variable

blandet C++/Java app
    Java opstarts kode
    Java main
        Y
            JNI metode wrapper
                X
                      objekt
                          bruger global variable

og at sidstnævnte ikke virker fordi de global variable ikke
er initialiseret.

Kun et gæt.

Jeg ved intet om Symbian. Og intet om jeres applikation.

Jeg har bare set den slags problemer før i applikationer
skrevet i to eller flere sprog.
Avatar billede tesd Nybegynder
29. april 2003 - 12:26 #4
Det er ikke helt det der er mit problem. Jeg kan godt få selv jni til at virke med jeg skal udkommentere oprettelsen af et objekt der er defineret i symbian. Dette objekt køre asynkront og vi forventer et asynkront kaldt tilbage. Men denne oprettelse kan ikke lade sig gøre. Jeg har selv lavet et objekt der kørte asynkront og det var den samme fejl jeg fik, nu er det altsammen udkommenteret, både mit eget og det der er lavet til symbian.
Avatar billede arne_v Ekspert
29. april 2003 - 12:29 #5
Jeg er lost.

Du må håbe der er andre som ved noget.
Avatar billede lborupj Nybegynder
30. april 2003 - 10:52 #6
jeg tror at problemet skyldes at det "external" name som metoden/funktionen ikke er sat til en C "type". Gør noget ala:

extern "C" {

  JNIEXPORT void JNICALL
  doStuff(JNIEnv* env, jclass c, jstring s) {
  }

}
Avatar billede tesd Nybegynder
30. april 2003 - 10:56 #7
Nej det er ikke helt rigtig, det du skriver har jeg med.
Avatar billede arne_v Ekspert
30. april 2003 - 11:00 #8
Plejer der ikke at blive genereret:

#ifdef __cplusplus
extern "C" {
#endif
...
#ifdef __cplusplus
}
#endif

i .H filen automatisk ?
Avatar billede tesd Nybegynder
30. april 2003 - 11:01 #9
Jep
Avatar billede tesd Nybegynder
30. april 2003 - 11:23 #10
Jeg skal jo huske at gøre opmærksom på at JNI VIRKER. Det vil sige at der er hul igennem fra Java til C++, men det er når et objekt der køre asynkront bliver oprettet. Dette giver en fejl der lyder således..

"This panic is raised by the Start(), Stop() and Add() member functions of an active scheduler, a CActiveScheduler. It is caused by attempting to start or stop an active scheduler or by attempting to add an active object, a CActive, to the active scheduler."
Citat slut...
Hvad siger i så.
Avatar billede tesd Nybegynder
30. april 2003 - 11:24 #11
Det er CActive objekt er problemet, og det er denne der køre asynkront.
Avatar billede tesd Nybegynder
30. april 2003 - 11:44 #12
Ja så er problemet løst.
Det viser sig at et CActive objekt altid skal have en active scheduler installeret, for at kunne køre asynkront. Dette var mit problem...længe leve Symbian...eller ikke helt...
Eller tak for hjælpen drenge...men så længe i ikke ved noget om symbian så var det vist bestemt at i ikke kunne hjælpe.
Avatar billede tesd Nybegynder
30. april 2003 - 11:44 #13
Og så napper jeg lige mine point igen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester