Jump to content
Nokioteca Forum

Studiando Symbian...un Piccolo Aiuto Dai Più Esperti


Andrea993
 Share

Recommended Posts

Sto studiando symbian c++ dal manuale "Symbian OS Basics Workbook v3.1" che ho trovato sul forum.

Secondo me per chi conosce solo l'ANSI C++ il manuale è il migliore, perchè spiega passo a passo le basi del symbian fino a raggiungere un livello avanzato.

Non avevo mai trovato una documentazione su symbian così completa e ordinata!

Devo dire che più studio symbian, più lo reputo il miglior OS per cellulare e mi dispiace la scelta di NOKIA nel passare a Windows Phone 7.

A parte l'introduzione nel studiare il manuale mi sono imbattuto nel secondo esercizio e carbide non me lo compila!!!!

Premetto che sto usando l'SDK "Nokia_Symbian3_SDK_v1.0" e il manuale tratta esercizi per S60v3 ma comunque le interfacce grafiche dovrebbero funzionare.

Il progetto si chiama "S60MemoryLab" e questi sono gli errori che mi segnala:

avkon.hrh: No such file or directory
avkon.rh: No such file or directory
declaration syntax error
declaration syntax error
declaration syntax error
declaration syntax error
declaration syntax error
declaration syntax error
eikon.rh: No such file or directory
S60MemoryLab.rsg: No such file or directory
the file 'aknapp.h' cannot be opened
the file 'akndoc.h' cannot be opened
the file 'eikstart.h' cannot be opened
undefined identifier 'AppDllUid'
undefined identifier 'CAknApplication'
undefined identifier 'CAknDocument'
undefined identifier 'CApaDocument'
undefined identifier 'CEikAppUi'
undefined identifier 'CreateDocumentL'
undefined identifier 'GLDEF_C'
undefined identifier 'LOCAL_C'
undefined identifier 'TUid'

Come mai questi errori?

Link to comment
Condividi su altri siti

Concordo, il workbook e' un ottimo manuale.

Cerca in ...\epoc32\ dove si trova il file avkon.hrh

ed aggiungi il path al file .mmp tramite SYSTEMINCLUDE

probabilmente si trova dentro \epoc32\include

quindi dovrai aggiungere al .mmp:

SYSTEMINCLUDE \epoc32\include

poi ricompila il .rss e verifica se la compilazione va a buon fine.

Il grande svantaggio di Symbian e' che nonostante sia altamente modulare, il suo codice e' molto difficile da manutenere... questo problema e' stato completamente risolto per quanto riguarda lo strato di GUI, con l'adozione di Qt, ma persiste per quanto riguarda il core del sistema.

Quindi non potra' mai crescere tanto velocemente quanto i sistemi operativi concorrenti, che in pochi anni sono riusciti a colmare il gap che li separava da Symbian, ed ora puntano al sorpasso...

Modificato da Il.Socio
Link to comment
Condividi su altri siti

Ho provato, adesso ritonrna 100 errori ma non capisco quale sia il problema di fondo, perchp mi dà errore a quasi tutte le linee del *document.h.

Riporto comunque gli errori, magari tu riesci a venirne fuori:

Description
      C:\Labs\Lab_04304.cb1\starter\src\S60MemoryLabApplication.cpp:4)
      C:\Labs\Lab_04304.cb1\starter\inc\S60MemoryLabDocument.h:7
      C:\Nokia\devices\Nokia_Symbian3_SDK_v1.0\epoc32\include\mw\akndoc.h:23
(included from:
the file 'savenotf.h' cannot be opened
      C:\Labs\Lab_04304.cb1\starter\src\S60MemoryLabApplication.cpp:4)
      C:\Labs\Lab_04304.cb1\starter\inc\S60MemoryLabDocument.h:7
      C:\Nokia\devices\Nokia_Symbian3_SDK_v1.0\epoc32\include\mw\akndoc.h:23
      C:\Nokia\devices\Nokia_Symbian3_SDK_v1.0\epoc32\include\mw\eikdoc.h:19
      C:\Labs\Lab_04304.cb1\starter\src\S60MemoryLabAppUi.cpp:4)
      C:\Labs\Lab_04304.cb1\starter\inc\S60MemoryLabAppUi.h:7
      C:\Nokia\devices\Nokia_Symbian3_SDK_v1.0\epoc32\include\mw\eikapp.h:19
      C:\Labs\Lab_04304.cb1\starter\src\S60MemoryLab.cpp:4)
      C:\Nokia\devices\Nokia_Symbian3_SDK_v1.0\epoc32\include\mw\eikstart.h:20
      C:\Nokia\devices\Nokia_Symbian3_SDK_v1.0\epoc32\include\mw\apparc.h:27
(included from:
the file 'apaidpartner.h' cannot be opened
    C:\Labs\Lab_04304.cb1\starter\src\S60MemoryLabAppUi.cpp:4)
    C:\Labs\Lab_04304.cb1\starter\inc\S60MemoryLabAppUi.h:11
    C:\Nokia\devices\Nokia_Symbian3_SDK_v1.0\epoc32\include\mw\aknappui.h:23
    C:\Nokia\devices\Nokia_Symbian3_SDK_v1.0\epoc32\include\mw\eikspane.h:22
(included from:
the file 'eiksrvc.h' cannot be opened
 C:\Labs\Lab_04304.cb1\starter\src\S60MemoryLabApplication.cpp:4)
 C:\Labs\Lab_04304.cb1\starter\inc\S60MemoryLabDocument.h:7
 C:\Nokia\devices\Nokia_Symbian3_SDK_v1.0\epoc32\include\mw\akndoc.h:23
 C:\Nokia\devices\Nokia_Symbian3_SDK_v1.0\epoc32\include\mw\eikdoc.h:19
 C:\Labs\Lab_04304.cb1\starter\src\S60MemoryLabAppUi.cpp:4)
 C:\Labs\Lab_04304.cb1\starter\inc\S60MemoryLabAppUi.h:7
 C:\Nokia\devices\Nokia_Symbian3_SDK_v1.0\epoc32\include\mw\eikapp.h:19
 C:\Labs\Lab_04304.cb1\starter\src\S60MemoryLabContainer.cpp:4)
 C:\Labs\Lab_04304.cb1\starter\inc\S60MemoryLabContainer.h:7
 C:\Nokia\devices\Nokia_Symbian3_SDK_v1.0\epoc32\include\mw\coecntrl.h:21
 C:\Nokia\devices\Nokia_Symbian3_SDK_v1.0\epoc32\include\w32std.h:22
 C:\Nokia\devices\Nokia_Symbian3_SDK_v1.0\epoc32\include\fntstore.h:23
 C:\Labs\Lab_04304.cb1\starter\src\S60MemoryLab.cpp:4)
 C:\Nokia\devices\Nokia_Symbian3_SDK_v1.0\epoc32\include\mw\eikstart.h:20
 C:\Nokia\devices\Nokia_Symbian3_SDK_v1.0\epoc32\include\mw\apparc.h:21
(included from:
the file 'e32svr.h' cannot be opened
      C:\Labs\Lab_04304.cb1\starter\src\S60MemoryLabApplication.cpp:4)
      C:\Labs\Lab_04304.cb1\starter\inc\S60MemoryLabDocument.h:7
      C:\Nokia\devices\Nokia_Symbian3_SDK_v1.0\epoc32\include\mw\akndoc.h:23
(included from:
undefined identifier 'MSaveObserver'
illegal constructor/destructor declaration
    C:\Labs\Lab_04304.cb1\starter\src\S60MemoryLabAppUi.cpp:4)
    C:\Labs\Lab_04304.cb1\starter\inc\S60MemoryLabAppUi.h:11
    C:\Nokia\devices\Nokia_Symbian3_SDK_v1.0\epoc32\include\mw\aknappui.h:22
(included from:
undefined identifier 'CEikApplication'
      C:\Labs\Lab_04304.cb1\starter\src\S60MemoryLabApplication.cpp:4)

Link to comment
Condividi su altri siti

è lo stesso systeminclude che avevo scritto precedentemente...È strano però

Cioè forse hai sbagliato di scrivere perchè sarebbe

epoc32\include\mw

Comunque ho controllato, il file C:\Nokia\devices\Nokia_Symbian3_SDK_v1.0\epoc32\include\mw\akndoc.h esiste

Modificato da Andrea993
Link to comment
Condividi su altri siti

No, non e' lo stesso del precedente...

il precedente era:

SYSTEMINCLUDE \epoc32\include

questo e':

SYSTEMINCLUDE \epoc32\include\mw

sono due include differenti e devi metterli entrambi, se vuoi che entrambi i file avkon.hrh e akndoc.h vengano trovati.

Modificato da Il.Socio
Link to comment
Condividi su altri siti

Ho risolto così:

SYSTEMINCLUDE \epoc32\include \epoc32\include\mw \epoc32\include\platform \epoc32\include\platform\mw

Ora il progetto parte sull'emulatore, ma l'emulatore mostra una schermata azzurrina e invece di partire il programma si spegne l'emulatore.

Non me ne va bene una :(

Comunque Marco grazie mille per l'aiuto

Link to comment
Condividi su altri siti

Io uso 3rd MR perche' e' l'unico che permette di generare un pacchetto che girera' su:

3rd / 3rd FP1 / 3rd FP2 / 5th / S^3 / Belle

Ma, per ora, puoi benissimo trascurare questi aspetti.

Li vedrai poi piu' avanti, dopo che avrai ampliato le tue conoscenze sulla piattaforma e soprattutto, dopo che avrai realizzato qualche prodotto che vorrai poi distribuire.

E' superfluo che approfondisci adesso queste tematiche... e' meglio per te se al momento ti concentri su quello che sono i vari componenti del sistema, ed i vari costrutti di programmazione presenti nel linguaggio.

Modificato da Il.Socio
Link to comment
Condividi su altri siti

Scusa ancora se abuso della tua disponibilità, ma ho riscontrato un nuovo problema.

Usando l'SDK per gli s60v3 quando creo un nuovo progetto di tipo "GUI Application" alla compilazione ricevo questi errori:

BEGIN failed--compilation aborted at C:/Nokia/devices/S60_3rd_FP2_SDK_v1.1/epoc32/tools/perllib/args.pm line 19.
BEGIN failed--compilation aborted at C:\Nokia\devices\S60_3rd_FP2_SDK_v1.1\epoc32\tools/cshlpcmp.pl line 58.
the file 'prova0_0xe344a5dc.hlp.hrh' cannot be opened
undefined identifier 'KGeneral_Information'

Il progetto l'ho chiamato "prova0".

Non riesco a venirne fuori e mi dispiace visto che ho letto almeno 200 pagine in inglese questa settimana...

Modificato da Andrea993
Link to comment
Condividi su altri siti

Ad occhio e croce direi che i file di help non sono stati compilati correttamente, quindi ti manca il relativo file .hrh

Puoi eliminare completamente i file relativi all'help e tutti quanti i vari riferimenti ad esso (KGeneral_Information)

oppure, ti tocca capire come mai il file di help non e' stato compilato correttamente e non e' stato generato il file prova0_0xe344a5dc.hlp.hrh

Purtroppo, come stai gia' scoprendo, gia' solo per la compilazione si possono verificare innumerevoli problematiche... e come se non bastasse, gli esempi a volte sono incompleti oppure necessitano di alcune modifiche per compilare.

Modificato da Il.Socio
Link to comment
Condividi su altri siti

il file di help contiene l'help visualizzabile nell'applicazione selezionando "opzioni > guida"

cosa sta ad indicare il fatto che _HELP_AVAILABLE_ sia definito

quello lo vedi dal codice... a seconda che quella macro sia definita o meno, verranno compilate alcune parti o altre...

Modificato da Il.Socio
Link to comment
Condividi su altri siti

Ho risolto così:

Siccome ho letto che l'sdk per s60v3 non è compatibile con carbide 3.3 ho installato carbide 2.7

Poi mi dava ancora errore per l'help quindi ho aggiunto un #undef _HELP_AVAILABLE_ in AppUi.

Questa però è una soluzione provvisoria, visto che più avanti penso proprio che farò uso dell'help.

Il file "prova0_0xe344a5dc.hlp.hrh" continua a non venire creato, dove devo guardare per risolvere il problema?

Link to comment
Condividi su altri siti

Il file è build_help.mk

# ============================================================================
#  Name	 : build_help.mk
#  Part of  : prova1
# ============================================================================
#  Name	 : build_help.mk
#  Part of  : prova1
#
#  Description: This make file will build the application help file (.hlp)
# 
# ============================================================================

do_nothing :
@rem do_nothing

# build the help from the MAKMAKE step so the header file generated
# will be found by cpp.exe when calculating the dependency information
# in the mmp makefiles.

MAKMAKE : prova1_0xEB3EBEBE.hlp
prova1_0xEB3EBEBE.hlp : prova1.xml prova1.cshlp Custom.xml
cshlpcmp prova1.cshlp
ifeq (WINSCW,$(findstring WINSCW, $(PLATFORM)))
md $(EPOCROOT)epoc32\$(PLATFORM)\c\resource\help
copy prova1_0xEB3EBEBE.hlp $(EPOCROOT)epoc32\$(PLATFORM)\c\resource\help
endif

BLD : do_nothing

CLEAN :
del prova1_0xEB3EBEBE.hlp
del prova1_0xEB3EBEBE.hlp.hrh

LIB : do_nothing

CLEANLIB : do_nothing

RESOURCE : do_nothing

FREEZE : do_nothing

SAVESPACE : do_nothing

RELEASABLES :
@echo prova1_0xEB3EBEBE.hlp

FINAL : do_nothing

Credo che queste righe:

BLD : do_nothing

CLEAN :
del prova1_0xEB3EBEBE.hlp
del prova1_0xEB3EBEBE.hlp.hrh

Stiano a significare che quando si cancellano i file di compilazione debba cancellare anche prova1_0xEB3EBEBE.hlp e prova1_0xEB3EBEBE.hlp.hrh.

Ma quando si compila non crea nessun file. Quindi è qui il problema o sbaglio?

Questo è il progetto "prova1" che ho creato con carbide 2.7

Modificato da Andrea993
Link to comment
Condividi su altri siti

Please sign in to comment

You will be able to leave a comment after signing in



Accedi Ora
 Share

×
×
  • Crea Nuovo...

Informazione Importante

Questo sito utilizza i cookie per analisi, contenuti personalizzati e pubblicità. Continuando la navigazione, accetti l'utilizzo dei cookie da parte nostra | Privacy Policy