Maledetti numeri

di il
29 risposte

29 Risposte - Pagina 2

  • Re: Maledetti numeri

    Crei un nuovo progetto, i precompiled header non servono, ci aggiungi gli .hh e .cc (escludendo testsuite.cc che non è necessario). Poi togli il main che ti è stato creato in automatico e usi quello che c' è in sample.cc. Dovrebbe funzionare.
  • Re: Maledetti numeri

    Quando compilo la libreria non mi da errori
    ma quando l'eseguo mi da : unable to start program + percorso di dove dovrebbe stare il file bigint.lib
    come devo fare per creare questo file?
    poi quale è l' header per includere la libreria che mi sarei costruito?
  • Re: Maledetti numeri

    Se stai cercando di costruire una libreria è normale che non parta, una libreria non può essere avviata.

    Prima di costruirti la libreria ti consiglierei di provare se quella classe fa al caso tuo, la cosa più semplice e di crearti un nuovo progetto di tipo console, e di seguire le istruzioni che ti ho detto prima. In questo modo verifichi che tutto funzioni come si deve e puoi fare delle prove.

    Poi puoi scegliere se farti una lib, oppure in alternativa visto che il codice è piccolo metti tutto il codice in un solo file .cpp (più un .h con la dichiarazione delle classe BigInteger) e te lo porti dentro i tuoi progetti.
  • Re: Maledetti numeri

    Meglio farne una libreria subito cosi se va bene c'è lo già pronta per il futuro.
    se non va bene imparerò come disinstallare una libreria!
    per adesso imparo come costruirla cosi quando avrò creato abbastanza funzioni potrò finalmente utilizzare le mie!
    adesso una volta che ho compilato dove trovo la libreria con il relativo file header per poterla utilizzare?
  • Re: Maledetti numeri

    Il .lib lo trovi nella directory di output (è configurabile nelle opzioni) e comunque ti viene scritto nella finestra di output. Il file di header non viene generato te lo devi scrivere tu (o usi uno che già esiste). Dovrà contenere la classe BigInteger, ma BigInteger fà riferimento a BgUnsigned e questo a NumberlikeArray, insomma buon lavoro!

    Fai prima a portarti dentro tutti i .h.
  • Re: Maledetti numeri

    Se facessi un unico heider levando le include interne credo che non ci siano problemi o sbaglio?
    lasciando naturalmente quelle di sistema!
    poi come farei a fargli capire che l'haider creato fa riferimento alla libreria?
  • Re: Maledetti numeri

    Facciamo un caso semplice, hai scritto una lib che contiene la funzione 'int MyFunc(int a, int b)'. Il tuo progetto linka questa lib e da qualche parte (non necessariamente in un .h) scrivi quel prototipo. A questo punto il compilatore è in grado di scrivere il codice di chiamata. Da nessuna parte c' è scritto che quella funzione è nella lib, sarà compito del linker trovarla.
  • Re: Maledetti numeri

    Allora che c'è scritto nel file .lib?
    se ho capito bene l'idea del unico haider andrebbe anche bene.
    che succede se involontariamente scrivo 2 funzioni differenti ma che hanno lo stesso nome pur stando in 2 librerie diverse?
  • Re: Maledetti numeri

    Pultroppo ho provato a creare un unico include ma non è andata cosi come speravo.
    quindi ho ripreso la vecchia libreria che mi ero creata così come era prima
    cioè con tutte le sue include.
    lo ricreata e lo installata dentro visual c (non dimenticandomi tutti gli hader!)
    ho fatto un piccolo programmino per testarla il quale è il seguente:
    // tabellina256.cpp : Defines the entry point for the console application.
    //
    
    #include "stdafx.h"
    #include <iostream>
    #include "windows.h"
    #include "BigIntegerLibrary.h" // qui ci sono tutti gli altri include!
    using std::cin;
    using std::cout;
    using std::endl;
    using namespace std;
    int _tmain(int argc, _TCHAR* argv[])
       {
    	int indy,kindy,numero;
    	BigInteger tabellina[11];
    	numero = 258;
    	//***************************************
    	//* inizializzazione vettore tabellina. *
    	//***************************************
    	for (indy = 0;indy < 11; indy++) { tabellina[indy]=1; }
    	for (indy = 1;indy < 11; indy++)
    	   {
    		for (kindy = 1;kindy <= indy; kindy++)
    		   { 
    		    tabellina[indy]= tabellina[indy] * numero;
    		   }
    	   }
    	cout << "**************************************" << "\n";
    	cout << "*        TABELLINA DEL 258         *" << "\n";
    	cout << "**************************************" << "\n";
    	for (indy = 0; indy < 11;indy++)
    	   {
    		cout << "* " << indy << " * 258 = " << tabellina[indy] << " *" << "\n";
    	   }
    	cout << "***************************************" << "\n";
    	cout << " premi un numero e invio per terminare ";
    	cin >> numero;
    	return 0;
       }
    
    ma qundo l'ho compilata mi ha dato i seguenti errori:
    1>tabellina256.obj : error LNK2019: unresolved external symbol "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl operator<<(class std::basic_ostream<char,struct std::char_traits<char> > &,class BigInteger const &)" (??6@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV01@ABVBigInteger@@@Z) referenced in function _wmain
    1>tabellina256.obj : error LNK2019: unresolved external symbol "public: void __thiscall BigInteger::operator=(class BigInteger const &)" (??4BigInteger@@QAEXABV0@@Z) referenced in function _wmain
    1>tabellina256.obj : error LNK2019: unresolved external symbol "public: __thiscall BigInteger::BigInteger(int)" (??0BigInteger@@QAE@H@Z) referenced in function _wmain
    1>tabellina256.obj : error LNK2019: unresolved external symbol "public: void __thiscall BigInteger::multiply(class BigInteger const &,class BigInteger const &)" (?multiply@BigInteger@@QAEXABV1@0@Z) referenced in function "public: class BigInteger __thiscall BigInteger::operator*(class BigInteger const &)const " (??DBigInteger@@QBE?AV0@ABV0@@Z)

    cosa ho sbagliato o mi sono dimenticato?
    la libreria lo installata nel seguente modo
    tutti gli hader li ho messi nella directory : c:\visual studio 10\vc\include
    mentre il file.lib l'ho messo nella directory : c:\visual studio 10\vc\lib
    andava installata così oppure ho dimenticato qualcosa?
  • Re: Maledetti numeri

    smalldragon ha scritto:


    allora che c'è scritto nel file .lib?
    La lib contiene la funzione compilata.
  • Re: Maledetti numeri

    smalldragon ha scritto:


    ma qundo l'ho compilata mi ha dato i seguenti errori:
    1>tabellina256.obj : error LNK2019: unresolved external symbol "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl operator<<(class std::basic_ostream<char,struct std::char_traits<char> > &,class BigInteger const &)" (??6@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV01@ABVBigInteger@@@Z) referenced in function _wmain
    1>tabellina256.obj : error LNK2019: unresolved external symbol "public: void __thiscall BigInteger::operator=(class BigInteger const &)" (??4BigInteger@@QAEXABV0@@Z) referenced in function _wmain
    1>tabellina256.obj : error LNK2019: unresolved external symbol "public: __thiscall BigInteger::BigInteger(int)" (??0BigInteger@@QAE@H@Z) referenced in function _wmain
    1>tabellina256.obj : error LNK2019: unresolved external symbol "public: void __thiscall BigInteger::multiply(class BigInteger const &,class BigInteger const &)" (?multiply@BigInteger@@QAEXABV1@0@Z) referenced in function "public: class BigInteger __thiscall BigInteger::operator*(class BigInteger const &)const " (??DBigInteger@@QBE?AV0@ABV0@@Z)

    cosa ho sbagliato o mi sono dimenticato?
    la libreria lo installata nel seguente modo
    tutti gli hader li ho messi nella directory : c:\visual studio 10\vc\include
    mentre il file.lib l'ho messo nella directory : c:\visual studio 10\vc\lib
    andava installata così oppure ho dimenticato qualcosa?
    Mettendola in vc\lib hai semplicemente messo la lib in un percorso noto, avresti potuto anche copiarla nella directory del progetto era lo stesso, ma non hai specificato che intendi usarla.
    Nelle opzioni del progetto Linker/input aggiungila a Additional Dependencies.
  • Re: Maledetti numeri

    Grazie domani torno a lavoro e proverò e poi ti farò sapere
  • Re: Maledetti numeri

    E andato tutto bene grazie ancora.
    un ultima curiosità.
    ma se volessi fare una libreria di sole funzioni quale sarebbe un haider tipico?
    visto che tutti i manuali che tengo quando parlano degli haider parlano solo delle classi
  • Re: Maledetti numeri

    L' header della lib conterrà prototipi delle funzioni che espone, ad esempio:
    int MyFunc(int a, int b);
  • Re: Maledetti numeri

    Grazie per l'ennesima volta
    ritornando alla bigint ho riscontrato questo problema in fase di compilazione.
    il programma e questo:
    #include "stdafx.h"
    #include <iostream>
    #include "BigIntegerLibrary.h"
    using std::cin;
    using std::cout;
    using std::endl;
    using namespace std;
    int _tmain(int argc, _TCHAR* argv[])
    {
    BigInteger a;
    //int b:
    cout << "introduci un numero : ";
    cin >> a;
    return 0;
    }
    c:\documents and settings\navati\documenti\visual studio 2010\projects\prova\prova\prova.cpp(16): error C2678: binary '>>' : no operator found which takes a left-hand operand of type 'std::istream' (or there is no acceptable conversion)
    1> c:\programmi\microsoft visual studio 10.0\vc\include\istream(1053): could be 'std::basic_istream<_Elem,_Traits> &std::operator >><std::char_traits<char>>(std::basic_istream<_Elem,_Traits> &&,signed char *)'
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> c:\programmi\microsoft visual studio 10.0\vc\include\istream(1060): or 'std::basic_istream<_Elem,_Traits> &std::operator >><std::char_traits<char>>(std::basic_istream<_Elem,_Traits> &&,signed char &)'
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> c:\programmi\microsoft visual studio 10.0\vc\include\istream(1067): or 'std::basic_istream<_Elem,_Traits> &std::operator >><std::char_traits<char>>(std::basic_istream<_Elem,_Traits> &&,unsigned char *)'
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> c:\programmi\microsoft visual studio 10.0\vc\include\istream(1074): or 'std::basic_istream<_Elem,_Traits> &std::operator >><std::char_traits<char>>(std::basic_istream<_Elem,_Traits> &&,unsigned char &)'
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> c:\programmi\microsoft visual studio 10.0\vc\include\istream(1097): or 'std::basic_istream<_Elem,_Traits> &std::operator >><std::char_traits<char>>(std::basic_istream<_Elem,_Traits> &,signed char *)'
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> c:\programmi\microsoft visual studio 10.0\vc\include\istream(1104): or 'std::basic_istream<_Elem,_Traits> &std::operator >><std::char_traits<char>>(std::basic_istream<_Elem,_Traits> &,signed char &)'
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> c:\programmi\microsoft visual studio 10.0\vc\include\istream(1111): or 'std::basic_istream<_Elem,_Traits> &std::operator >><std::char_traits<char>>(std::basic_istream<_Elem,_Traits> &,unsigned char *)'
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> c:\programmi\microsoft visual studio 10.0\vc\include\istream(1118): or 'std::basic_istream<_Elem,_Traits> &std::operator >><std::char_traits<char>>(std::basic_istream<_Elem,_Traits> &,unsigned char &)'
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> c:\programmi\microsoft visual studio 10.0\vc\include\istream(1128): or 'std::basic_istream<_Elem,_Traits> &std::operator >><char,std::char_traits<char>,BigInteger>(std::basic_istream<_Elem,_Traits> &&,_Ty &)'
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>,
    1> _Ty=BigInteger
    1> ]
    1> c:\programmi\microsoft visual studio 10.0\vc\include\istream(179): or 'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(std::basic_istream<_Elem,_Traits> &(__cdecl *)(std::basic_istream<_Elem,_Traits> &))'
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> c:\programmi\microsoft visual studio 10.0\vc\include\istream(185): or 'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(std::basic_ios<_Elem,_Traits> &(__cdecl *)(std::basic_ios<_Elem,_Traits> &))'
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> c:\programmi\microsoft visual studio 10.0\vc\include\istream(192): or 'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(std::ios_base &(__cdecl *)(std::ios_base &))'
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> c:\programmi\microsoft visual studio 10.0\vc\include\istream(199): or 'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(std::_Bool &)'
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> c:\programmi\microsoft visual studio 10.0\vc\include\istream(218): or 'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(short &)'
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> c:\programmi\microsoft visual studio 10.0\vc\include\istream(253): or 'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(unsigned short &)'
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> c:\programmi\microsoft visual studio 10.0\vc\include\istream(272): or 'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(int &)'
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> c:\programmi\microsoft visual studio 10.0\vc\include\istream(298): or 'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(unsigned int &)'
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> c:\programmi\microsoft visual studio 10.0\vc\include\istream(316): or 'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(long &)'
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> c:\programmi\microsoft visual studio 10.0\vc\include\istream(334): or 'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(unsigned long &)'
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> c:\programmi\microsoft visual studio 10.0\vc\include\istream(354): or 'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(__int64 &)'
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> c:\programmi\microsoft visual studio 10.0\vc\include\istream(373): or 'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(unsigned __int64 &)'
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> c:\programmi\microsoft visual studio 10.0\vc\include\istream(392): or 'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(float &)'
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> c:\programmi\microsoft visual studio 10.0\vc\include\istream(411): or 'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(double &)'
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> c:\programmi\microsoft visual studio 10.0\vc\include\istream(429): or 'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(long double &)'
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> c:\programmi\microsoft visual studio 10.0\vc\include\istream(447): or 'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(void *&)'
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> c:\programmi\microsoft visual studio 10.0\vc\include\istream(466): or 'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(std::basic_streambuf<_Elem,_Traits> *)'
    1> with
    1> [
    1> _Elem=char,
    1> _Traits=std::char_traits<char>
    1> ]
    1> while trying to match the argument list '(std::istream, BigInteger)'
    1>
    1>Build FAILED.
    1>
    1>Time Elapsed 00:00:00.76
    ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
    che cosa significa e come posso risolvere il problema?
Devi accedere o registrarti per scrivere nel forum
29 risposte