Nokioteca [Nokia] Forum: Aiuto Dll In C++ - Nokioteca [Nokia] Forum

Salta al contenuto

Pagina 1 di 1
  • Non puoi iniziare una nuova discussione
  • Non puoi rispondere a questa discussione

Aiuto Dll In C++

#1 L   madhacker 

  • Senior Member
  • PuntoPuntoPuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 527
  • Iscritto: 16 settembre 2006
  • Cellulare:N95-2,5800

Inviato 29 aprile 2009 - 15:21

Scrivo qui in quanto non ho trovato in giro alcuna soluzione mostrata o documentata, almeno per i miei criteri di ricerca.
In pratica io sto cercando di creare una libreria per python scritta in c++, ma prima di crearla direttamente per python, ho creato un'applicazione vera e propria per testare le varie funzioni.
Partendo dal classico HelloWorld ho aggiunto le varie funzioni, menu, risorse e tutto il resto. Dopo vari giorni sono riuscito a smussare un po' i vari errori (sicuramente ce ne saranno altri), così ho deciso di fare il porting in dll (.pyd). Qui sono dolori...
Purtroppo devo ammettere che ci ho messo 3 giorni per far funzionare tutte le funzioni nel progetto per python, tutte tranne 1! Perchè sono incappato in un'errore che non riesco a risolvere :D
In pratica, ultimamente mi sono dilettato a fare qualche libreria per python (alcune non le ho pubblicate ancora) e tutte sono funzionanti, ma finora non ho mai avuto la necessità di dover usare un file di risorse nei moduli per python.
Ora vi posto il molare del giudizio da curare :P
TDes& QueryDialogL(const TDesC& aTitle, TDes& aBuffer, TInt maxLenght)
{
	CAknTextQueryDialog* Dialog =
	CAknTextQueryDialog::NewL(aBuffer,CAknQueryDialog::ENoTone);
	Dialog->PrepareLC(R_ASK_NAME_DIALOG);
	Dialog->SetPredictiveTextInputPermitted(ETrue);	
	Dialog->SetMaxLength(maxLenght);
	Dialog->SetPromptL(aTitle);
	Dialog->RunLD();
	return aBuffer;
}

e questo è la parte del file di risorse interessata a R_ASK_NAME_DIALOG
RESOURCE DIALOG R_ASK_NAME_DIALOG
	{
	flags = EGeneralQueryFlags;
	buttons = R_AVKON_SOFTKEYS_OK_CANCEL;
	items=
		{
		DLG_LINE
			{
			type = EAknCtQuery;
			id = EGeneralQuery;
			control= AVKON_DATA_QUERY 
				{ 
				layout = EDataLayout;
				control = EDWIN
					{ 
					flags= EEikEdwinNoHorizScrolling | EEikEdwinResizable; 
					maxlength = 250; 
					width = 4; 
					lines = 1; 
					};
				};
			}
		};
	}


se lascio il codice così e inserisco il file .rss nel file di progetto .mmp lo buildo (ovviamente inserendo anche l'include al rispettivo .rsg), la compilazione non dà alcun errore, ma quando uso quella funzione mi si chiude il programma con "CONE 14" che indica che non è stata trovata la risorsa richiesta; se invece nella funzione includo
CCoeEnv::Static()->AddResourceFileL(_L("\\resource\\apps\\filerisorsa"));

l'applicazione non dà più l'errore "CONE 14" ma "System error(-1)" comunque senza mostrare la finestra di dialogo di testo.

Ora il mio problema non è tanto riuscire ad interagire con il file di risorsa, ma riuscire a stampare a video CAknTextQueryDialog o qualcosa di simile in modo che l'utente possa inserire i dati e riuscirli ad usare attraverso altre funzioni, senza dover passare per il file di risorse.

Grazie 1000 per gli aiuti o per le dritte.

Messaggio modificato da madhacker il 29 aprile 2009 - 15:23

0

#2 L   fabrinokia 

  • Advanced Member
  • PuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 61
  • Iscritto: 15 aprile 2009
  • Località:Firenze
  • Cellulare:E71
  • Firmware:210.21.006 RM346

Inviato 29 aprile 2009 - 15:59

Parto da una banalità....

Le risorse le hai nell'rss?!?!

Di solito, vedo che si fa una cosa del genere

iEikonEnv->AddResourceFileL(rscfile);
0

#3 L   madhacker 

  • Senior Member
  • PuntoPuntoPuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 527
  • Iscritto: 16 settembre 2006
  • Cellulare:N95-2,5800

Inviato 29 aprile 2009 - 17:47

si, certo, le risorse le ho nell'rss e come leggi poco sopra il tuo post ho provato ad includerlo tramite
CCoeEnv::Static()->AddResourceFileL(_L("\\resource\\apps\\filerisorsa"));

che equivale a quanto scritto da te
iEikonEnv->AddResourceFileL(_L("\\resource\\apps\\filerisorsa"));

così facendo il problema di errore "CONE 14" scompare ma compare "System error (-1)" chiudendo comunque il programma, senza completare la funzione :king:

Messaggio modificato da madhacker il 29 aprile 2009 - 17:48

0

#4 L   fabrinokia 

  • Advanced Member
  • PuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 61
  • Iscritto: 15 aprile 2009
  • Località:Firenze
  • Cellulare:E71
  • Firmware:210.21.006 RM346

Inviato 29 aprile 2009 - 17:59

Visualizza Messaggimadhacker, il 29/04/2009 - 18:47, ha scritto:

si, certo, le risorse le ho nell'rss e come leggi poco sopra il tuo post ho provato ad includerlo tramite
CCoeEnv::Static()->AddResourceFileL(_L("\\resource\\apps\\filerisorsa"));

che equivale a quanto scritto da te
iEikonEnv->AddResourceFileL(_L("\\resource\\apps\\filerisorsa"));

così facendo il problema di errore "CONE 14" scompare ma compare "System error (-1)" chiudendo comunque il programma, senza completare la funzione :king:


Mmmmhmm hai riprovato a rifare il build?
0

#5 L   madhacker 

  • Senior Member
  • PuntoPuntoPuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 527
  • Iscritto: 16 settembre 2006
  • Cellulare:N95-2,5800

Inviato 29 aprile 2009 - 18:37

si, per 3 giorni :D e ho cancellato anche tutti i files precedentemente buildati
0

#6 L   Il.Socio 

  • Nokioteca Staff
  • Gruppo: Moderatore
  • Messaggi: 7144
  • Iscritto: 02 dicembre 2005
  • Località:Torino
  • Cellulare:N8-00

Inviato 29 aprile 2009 - 19:30

Fossi in te installerei l'applicazione in c: e proverei con:
TInt offset = iEikonEnv->AddResourceFileL(_L("c:\\resource\\apps\\filerisorsa.rsc"));

ricordati anche di rilasciare il file alla fine, con:
iEikonEnv->DeleteResourceFile(offset);


Gia' che ci sei, ti consiglio di cambiare anche questa dichiarazione, perche' altrimenti rischi di metterti nelle condizioni di poter fare "casini"...
TDes& QueryDialogL(const TDesC& aTitle, TDes& aBuffer, TInt maxLenght)
{
...
return aBuffer;
}

con:
void QueryDialogL(const TDesC& aTitle, TDes& aBuffer, TInt maxLenght)
{
...
}

buffer viene gia' passato come parametro ed in uscita da questa funzione conterra' il nuovo valore...

Messaggio modificato da Il.Socio il 29 aprile 2009 - 19:36

Per segnalare allo Staff un messaggio non conforme al regolamento è sufficiente premere il bottone "Segnala" posizionato in basso a sinistra di ciascun messaggio.
0

#7 L   madhacker 

  • Senior Member
  • PuntoPuntoPuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 527
  • Iscritto: 16 settembre 2006
  • Cellulare:N95-2,5800

Inviato 30 aprile 2009 - 15:35

grazie Il.Socio ora funziona
In un primo momento nemmeno il tuo consiglio funzionava in quanto lo provavo sull'emulatore e dimenticavo che il drive dei build per l'emulatore è z: e non c:
in pratica devo inserire il percorso assoluto incluso di drive per richiamare la risorsa. meglio che niente :wacko:

ora però mi trovo davanti ad un altro piccolo problemuccio.
come spiegato al primo post, prima di passare alla creazione di una libreria per python, ho creato un'applicazione stand-alone in c++ (exe,mif,rsc, _reg.rss ...) e il tutto funziona. creando invece la libreria per python, e avendo risolto il problema del file di risorse, mi accorgo che fa il suo lavoro per metà.
la libreria, quando richiamata, effettua una scansione delle reti wlan disponibili, dando la possibilità di aggiungerle come punto di accesso se richiesto. l'applicazione che all'inizio ho creato funziona perfettamente, mentre la libreria funziona perfettamente se si tratta di una rete wlan senza codice, invece se viene trovata una WLAN con la chiave WEP viene creato il punto d'accesso ma risulta inutilizzabile.
per far funzionare il punto d'accesso con chiave WEP sono costretto ad andare nelle impostazioni di protezione di quest'ultimo e poi tornare indietro, anche senza modificare nulla, come se la libreria non inserisse nel database qualche campo. cosa molto strana in quanto effettua le stesse operazioni dell'applicazione che funziona benissimo anche con le WLAN con chiave WEP.

consigli in merito?

se servono ulteriori informazioni basta chiedere

ps: grazie anche per la dritta della funzione

Messaggio modificato da madhacker il 30 aprile 2009 - 15:35

0

#8 L   fabrinokia 

  • Advanced Member
  • PuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 61
  • Iscritto: 15 aprile 2009
  • Località:Firenze
  • Cellulare:E71
  • Firmware:210.21.006 RM346

Inviato 30 aprile 2009 - 16:37

Visualizza Messaggimadhacker, il 30/04/2009 - 16:35, ha scritto:

la libreria, quando richiamata, effettua una scansione delle reti wlan disponibili, dando la possibilità di aggiungerle come punto di accesso se richiesto. l'applicazione che all'inizio ho creato funziona perfettamente, mentre la libreria funziona perfettamente se si tratta di una rete wlan senza codice, invece se viene trovata una WLAN con la chiave WEP viene creato il punto d'accesso ma risulta inutilizzabile.
per far funzionare il punto d'accesso con chiave WEP sono costretto ad andare nelle impostazioni di protezione di quest'ultimo e poi tornare indietro, anche senza modificare nulla, come se la libreria non inserisse nel database qualche campo. cosa molto strana in quanto effettua le stesse operazioni dell'applicazione che funziona benissimo anche con le WLAN con chiave WEP.

consigli in merito?

se servono ulteriori informazioni basta chiedere

ps: grazie anche per la dritta della funzione


Ti dirò, a me lo fa normalmente cosi anomalamente il cellulare....

Se faccio scansione wlan, ne trovo una, metto la password, l'aggiunte agli apn disponbili, ma non naviga.

Vando nella gestione degli apn, confermo la password wep/wpa, allora poi naviga....

Sarà un baco di sistema operativo?!
0

#9 L   madhacker 

  • Senior Member
  • PuntoPuntoPuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 527
  • Iscritto: 16 settembre 2006
  • Cellulare:N95-2,5800

Inviato 30 aprile 2009 - 20:00

sarebbe una risposta giusta se lo facesse anche con l'applicazione stand-alone. in realtà il problema si presenta solo se aggiungo il punto d'accesso attraverso la libreria, mentre se lo aggiungo dall'applicazione (che ha le stesse funzioni della libreria) funziona alla perfezione e naviga anche.
0

#10 L   fabrinokia 

  • Advanced Member
  • PuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 61
  • Iscritto: 15 aprile 2009
  • Località:Firenze
  • Cellulare:E71
  • Firmware:210.21.006 RM346

Inviato 30 aprile 2009 - 20:24

Visualizza Messaggimadhacker, il 30/04/2009 - 21:00, ha scritto:

sarebbe una risposta giusta se lo facesse anche con l'applicazione stand-alone. in realtà il problema si presenta solo se aggiungo il punto d'accesso attraverso la libreria, mentre se lo aggiungo dall'applicazione (che ha le stesse funzioni della libreria) funziona alla perfezione e naviga anche.


Eccoci... :)

In effetti hai ragione.. Allora sarà bacato il mio telefono e la sua gestione deggli IAP.
0

Condividi questa discussione:


Pagina 1 di 1
  • Non puoi iniziare una nuova discussione
  • Non puoi rispondere a questa discussione