Visualizzazione dei risultati da 1 a 10 su 10

Discussione: C++ dll

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2012
    Messaggi
    16

    C++ dll

    Ciao a tutti,
    devo leggere all'interno di una dll un file di testo, ma lo stream non funziona,
    il codice che ho scritto è questo:
    codice:
    NApi::ECalculateResult Cballast::createParticle()
    {
            double theta[10000];
    	ifstream thetaStream; /* Dichiarazione di tipo */
    	thetaStream.open ("theta.txt"); /* Apertura del file */
    	if (!thetaStream) 
    	{
    	 return eSuccess;
    	} 
    	else 
    	{
    		for(int i=0;i<10000;i++) 
    		{
    		thetaStream >> theta[i]; /* lettura dati */
    		}
    	thetaStream.close(); /* chiusura file */
    	}
      return eSuccess;
    }
    Lo stesso codice per un'applicazione console va bene.
    Esiste qualche differenza che non conosco?
    Qualcuno può aiutarmi?
    Grazie!

  2. #2
    "Non funziona" non vuol dire niente, che problemi dà esattamente?
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2012
    Messaggi
    16
    Originariamente inviato da MItaly
    "Non funziona" non vuol dire niente, che problemi dà esattamente?
    Scusatemi non sono un esperto....
    Tutti i valori di theta sono -9.2559631349317831e+061
    facendo il debug ecco cosa viene fuori da theta:
    +_Filebuffer {_Set_eback=0xcccccccccccccccc <Ptr> non valido _Set_egptr=0xcccccccccccccccc <Ptr> non valido _Pcvt=0x0000000000000000 ...} std::basic_filebuf<char,std::char_traits<char> >

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Probabilmente la DLL non riesce a trovare il file "theta.txt" come fa l'applicazione console perché se lo aspetta su un'altra cartella.

    Fai la prova ad impostare il path assoluto per il file (ad esempio, "C:\\cartella\\theta.txt") e controlla se funziona.

    P.S. Tra l'altro, nel caso di errore nell'apertura del file restituisci comunque eSuccess ingannando il codice chiamante ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2012
    Messaggi
    16
    Originariamente inviato da oregon
    Probabilmente la DLL non riesce a trovare il file "theta.txt" come fa l'applicazione console perché se lo aspetta su un'altra cartella.

    Fai la prova ad impostare il path assoluto per il file (ad esempio, "C:\\cartella\\theta.txt") e controlla se funziona.

    P.S. Tra l'altro, nel caso di errore nell'apertura del file restituisci comunque eSuccess ingannando il codice chiamante ...
    infatti ora funziona,
    ho corretto anche eSuccess...
    che si deve fare per campare...
    Grazie mille!!!

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2012
    Messaggi
    16
    E per passare al codice la directory della dll come potri fare?

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Originariamente inviato da PeppeBuo
    E per passare al codice la directory della dll come potri fare?
    Cosa è la "directory della dll"? E a quale codice devi passarla?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Originariamente inviato da PeppeBuo
    E per passare al codice la directory della dll come potri fare?
    Forse intendevi: "la directory del file theta" ..

    Altrimenti, non è chiaro..

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2012
    Messaggi
    16
    Originariamente inviato da MdE2005
    Forse intendevi: "la directory del file theta" ..

    Altrimenti, non è chiaro..
    si scusami come sempre non sono chiaro ,
    nella stessa cartella della dll è memorizzata anche theta, quindi non vorrei indicare tutto il percorso (c:\\directory\\..\\theta.txt), come posso fare?
    Grazie.

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Utilizza la API

    GetModuleFileName

    per ottenere il percorso completo della DLL e utilizza la parte del path con il nome del tuo file.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.