Page 3 of 5 FirstFirst 12345 LastLast
Results 31 to 45 of 73

Thread: C++ help

  1. #31
    Lieutenant Glasny's Avatar
    Join Date
    Mar 2004
    Location
    Roma
    Posts
    4.882

    Default

    Sei sicuro che l'errore te lo dava il debugger e non il linker ?

    Perchè io direi che non hai associato il compilato di dlltest col main, non so se hai fatto due progetti distinti allora è ovvio che di suo non vi sia un riferimento alla dll che hai compilato nel primo progetto. Purtroppo in 5 minuti non ti ho trovato una guida con screen quindi te li dico in 4 parole : devi aggiungere un riferimento NEL progetto del main ALLA dll che hai compilato. Credo ci sia in un qualche menu, add reference, dll, e la metti.

    Un consiglio, non usare codice da copiare/incollare ma cerca dei progetti di esempio completi e parti da lì.
    Waiting for nothing
    AKA Ganondorf - Lista giochi giocati dal 97 a oggi in spoiler :
    Spoiler

    "Chi non sa fare la guerra, molto difficilmente può fare la pace"
    Playing Starcraft 2

  2. #32
    Lieutenant Commander Axet's Avatar
    Join Date
    Sep 2003
    Location
    Ginevra
    Posts
    33.807

    Default

    Nada, ho provato ad aggiungere la soluzione come riferimento (click col destro sul progetto -> riferimenti) ma ancora non va.

    Btw l'errore lo da in compilazione.. :O

    edit:
    se invece esplicito tutto il percorso del .h da includere, l'errore me lo da il linker.. sarò stronzo io ma il paradiso si rivolta ogni fottutissima volta che provo a premere f7 t_T
    Last edited by Axet; 26th October 2009 at 17:44.

    I'm no hero. Never was. Never will be.
    -----
    Soul of the mind, key to life's ether
    Soul of the lost, withdrawn from its vessel
    May strength be granted so the world might be mended...
    So the world might be mended...

  3. #33
    Lieutenant Commander Axet's Avatar
    Join Date
    Sep 2003
    Location
    Ginevra
    Posts
    33.807

    Default

    Ho copia-incollato l'hedaer praticamente OVUNQUE e ha stampato a schermo..

    Si è sentita la vocina angelica "aaaaaaaaaaaaaaaaaaaaaahhh" e una luce divina ha illuminato il monitor.

    I'm no hero. Never was. Never will be.
    -----
    Soul of the mind, key to life's ether
    Soul of the lost, withdrawn from its vessel
    May strength be granted so the world might be mended...
    So the world might be mended...

  4. #34
    Lieutenant Commander Axet's Avatar
    Join Date
    Sep 2003
    Location
    Ginevra
    Posts
    33.807

    Default

    Torno all'attacco.. ho iniziato a scrivere il codice per il progetto, giusto definire una sola delle classi da ereditare e vedere se riesco a far funzionare la dll anche se dentro ci sono delle classi (l'esempio che ero riuscito a far funzionare non aveva alcuna classe al suo interno)

    La dll la compila senza problemi, la mini applicazione console di test però da problemi.. errori col linker etc.

    Cmq.. i file interessati in questo caso sono 3:
    parseECF.h
    //#ifndef _PARSEECF_h_
    //#define _PARSEECF_h_
    #define matrix_height 30
    #define matrix_width 30
    #include <string>

    //#if defined DLL_EXPORT
    //#define DECLDIR _declspec(dllexport)
    //#else
    //#define DECLDIR _declspec(dllimport)
    //#endif

    //extern "C" _declspec(dllexport) bool parse(const char* path);

    //#endif

    extern "C" _declspec(dllexport)
    class parseECF
    {


    public:
    //parseECF();
    //~parseECF();

    private:
    int cella;
    int obsMatrix[matrix_height][matrix_width];


    public:
    bool parse(const char* path);
    };
    parseECF.cpp
    #include "parseECF.h"

    #include <iostream>
    #include <fstream>
    #include <string>
    using namespace std;

    //#include "parseECF.h"

    //parseECF()
    //{
    // parseECF::cella = 10;
    //}


    extern "C" _declspec(dllexport)
    bool parse(const char* path)
    {
    ifstream myfile;
    myfile.open(path, ifstream::in);
    if(!myfile)
    {
    cout << "apertura fallita" << endl;
    return false;
    }

    cout << "apertura riuscita" << endl;
    return true;





    }
    E infine l'applicazione di test, tale testing.cpp:
    #include "parseECF.h"

    int main()
    {
    parseECF test;
    std::string cane = "prova";

    const char* prova2 = cane.c_str();
    test.parse(prova2);

    return 1;
    }
    Le parti commentate sono dovute a esperimenti mal riusciti ma le ho lasciate perchè non si sa mai..

    L'errore che mi da è il seguente:
    1>------ Inizio compilazione: Progetto: progettoRobotica, Configurazione: Debug Win32 ------
    2>------ Inizio compilazione: Progetto: testEsecuzione, Configurazione: Debug Win32 ------
    1>Compilazione in corso...
    2>Compilazione in corso...
    1>parseECF.cpp
    2>testing.cpp
    1>c:\documents and settings\hax\documenti\visual studio 2008\projects\progettorobotica\progettorobotica\pa rseecf.h(33) : warning C4091: '__declspec(dllexport)': ignorato a sinistra di 'parseECF' quando non si dichiara alcuna variabile
    2>Collegamento in corso...
    1>Collegamento in corso...
    2>testing.obj : error LNK2019: riferimento al simbolo esterno "public: bool __thiscall parseECF:arse(char const *)" (?parse@parseECF@@QAE_NPBD@Z) non risolto nella funzione _main
    2>C:\Documents and Settings\HaX\Documenti\Visual Studio 2008\Projects\progettoRobotica\Debug\testEsecuzion e.exe : fatal error LNK1120: 1 esterni non risolti
    1>Collegamento in corso...
    2>Il log di compilazione è stato salvato in 'file://c:\Documents and Settings\HaX\Documenti\Visual Studio 2008\Projects\progettoRobotica\testEsecuzione\Debu g\BuildLog.htm'
    2>testEsecuzione - 2 errore/i, 0 avviso/i
    1>Incorporamento del manifesto in corso...
    1>Il log di compilazione è stato salvato in 'file://c:\Documents and Settings\HaX\Documenti\Visual Studio 2008\Projects\progettoRobotica\progettoRobotica\De bug\BuildLog.htm'
    1>progettoRobotica - 0 errore/i, 1 avviso/i
    ========== Compilazione: 1 completate, 1 non riuscite, 0 aggiornate, 0 ignorate ==========


    Ho cercato il codice dell'errore su google, ma non mi ha aiutato a risovlere il problema.. odio c++ t_T

    I'm no hero. Never was. Never will be.
    -----
    Soul of the mind, key to life's ether
    Soul of the lost, withdrawn from its vessel
    May strength be granted so the world might be mended...
    So the world might be mended...

  5. #35
    Lieutenant Commander Axet's Avatar
    Join Date
    Sep 2003
    Location
    Ginevra
    Posts
    33.807

    Default

    Up

    I'm no hero. Never was. Never will be.
    -----
    Soul of the mind, key to life's ether
    Soul of the lost, withdrawn from its vessel
    May strength be granted so the world might be mended...
    So the world might be mended...

  6. #36
    Lieutenant Glasny's Avatar
    Join Date
    Mar 2004
    Location
    Roma
    Posts
    4.882

    Default

    Come prima Axet, devi aggiungere anche questo nei riferimenti, altrimenti da testing.cpp non ti vede la dll parseECF.
    Waiting for nothing
    AKA Ganondorf - Lista giochi giocati dal 97 a oggi in spoiler :
    Spoiler

    "Chi non sa fare la guerra, molto difficilmente può fare la pace"
    Playing Starcraft 2

  7. #37
    Lieutenant Commander Axet's Avatar
    Join Date
    Sep 2003
    Location
    Ginevra
    Posts
    33.807

    Default

    Quote Originally Posted by Glasny View Post
    Come prima Axet, devi aggiungere anche questo nei riferimenti, altrimenti da testing.cpp non ti vede la dll parseECF.
    Già fatto ma purtroppo non funziona
    sicuramente ho sbagliato qualcosa nel codice, non ci piove, il punto è che dal basso della mia pressochè nulla conoscenza di c++ non riesco a capire cosa.

    Porco ido se avessi dovuto farlo in lisp, prolog, java, salcazzo avrei finito da 2 secoli e invece non ho praticamente ancora iniziato.. mi vien voglia di tagliarmi le vene

    I'm no hero. Never was. Never will be.
    -----
    Soul of the mind, key to life's ether
    Soul of the lost, withdrawn from its vessel
    May strength be granted so the world might be mended...
    So the world might be mended...

  8. #38
    Hador's Avatar
    Join Date
    Mar 2004
    Location
    Milano
    Posts
    31.321

    Default

    in lisp
    io purtroppo (cioè per fortuna) c++ mai usato... ma so a chi chiedere prossimo giro che mi vedi in uni fermami che ti faccio aiutare, tipo domani
    Last edited by Hador; 27th October 2009 at 17:51.

  9. #39
    Lieutenant Commander Axet's Avatar
    Join Date
    Sep 2003
    Location
    Ginevra
    Posts
    33.807

    Default

    Io uppo che magari qualche anima pia capita da ste parti

    I'm no hero. Never was. Never will be.
    -----
    Soul of the mind, key to life's ether
    Soul of the lost, withdrawn from its vessel
    May strength be granted so the world might be mended...
    So the world might be mended...

  10. #40
    Lieutenant
    Join Date
    Feb 2004
    Location
    Bresso
    Posts
    4.683

    Default

    Ho incollato il tuo codice in due progetti che ho creato ora.

    A livello di codice nel file parseECF.cpp manca la dichiarazione della classe di cui stai implementando la funzione, cioe' parseECF:: davanti a parse(const char* path)

    A parte questo che non c'entra con l'errore di link, dovresti aprire le properties del progetto dell'exe e aggiungere sotto Linker->General->Additional Library Directories il path dove viene generata la dll (tipicamente ...\debug) e sotto Linker->Input->Additional Dependencies il nome della lib prodotta dalla generazione della dll.
    Per es. se stai generando pippo.dll, dovrebbe generare nello stesso folder anche una pippo.lib.

    Con queste operazioni mi e' sparito l'errore di Unresolved external, e ho potuto compilare ed eseguire il tutto.

  11. #41
    Lieutenant Commander Axet's Avatar
    Join Date
    Sep 2003
    Location
    Ginevra
    Posts
    33.807

    Default

    Quote Originally Posted by Kat View Post
    Ho incollato il tuo codice in due progetti che ho creato ora.
    A livello di codice nel file parseECF.cpp manca la dichiarazione della classe di cui stai implementando la funzione, cioe' parseECF:: davanti a parse(const char* path)
    A parte questo che non c'entra con l'errore di link, dovresti aprire le properties del progetto dell'exe e aggiungere sotto Linker->General->Additional Library Directories il path dove viene generata la dll (tipicamente ...\debug) e sotto Linker->Input->Additional Dependencies il nome della lib prodotta dalla generazione della dll.
    Per es. se stai generando pippo.dll, dovrebbe generare nello stesso folder anche una pippo.lib.
    Con queste operazioni mi e' sparito l'errore di Unresolved external, e ho potuto compilare ed eseguire il tutto.
    Grazie mille kat appena arrivo a casa provo.
    Per quanto riguarda l'aver scritto "bool parse(const char* path)" invece di "parseECF::bool parse(const char* path)", è dovuto al fatto che se scrivo la seconda cosa mi dice che sto ridefinendo il metodo (WTF? non c'è overload ed è definito nella dichiarazione della classe nell'header) e di conseguenza mi da errore.. boh!

    Cmq appena arrivo a casa provo, grazie ancora <3

    I'm no hero. Never was. Never will be.
    -----
    Soul of the mind, key to life's ether
    Soul of the lost, withdrawn from its vessel
    May strength be granted so the world might be mended...
    So the world might be mended...

  12. #42
    Lieutenant Commander Axet's Avatar
    Join Date
    Sep 2003
    Location
    Ginevra
    Posts
    33.807

    Default

    Niente, purtroppo sempre il solito errore..

    Ho aggiunto la directory corretta qui "Linker->General->Additional Library Directories ".
    Mentre "Linker->Input->Additional Dependencies " mi apre una finestra dove però non posso selezionare nè aggiungere niente.

    Eccheccazzo ç____ç

    I'm no hero. Never was. Never will be.
    -----
    Soul of the mind, key to life's ether
    Soul of the lost, withdrawn from its vessel
    May strength be granted so the world might be mended...
    So the world might be mended...

  13. #43
    Lieutenant Commander Warbarbie's Avatar
    Join Date
    Nov 2004
    Location
    Rome
    Posts
    16.296

    Default

    Quote Originally Posted by Axet View Post
    Niente, purtroppo sempre il solito errore..

    Ho aggiunto la directory corretta qui "Linker->General->Additional Library Directories ".
    Mentre "Linker->Input->Additional Dependencies " mi apre una finestra dove però non posso selezionare nè aggiungere niente.

    Eccheccazzo ç____ç

    Hai provato ad aggiungere le dependencies nella dichiaraziona iniziale?


  14. #44
    Lieutenant Commander Axet's Avatar
    Join Date
    Sep 2003
    Location
    Ginevra
    Posts
    33.807

    Default

    Quote Originally Posted by Warbarbie View Post
    Hai provato ad aggiungere le dependencies nella dichiaraziona iniziale?
    No, how to?

    I'm no hero. Never was. Never will be.
    -----
    Soul of the mind, key to life's ether
    Soul of the lost, withdrawn from its vessel
    May strength be granted so the world might be mended...
    So the world might be mended...

  15. #45
    Lieutenant Commander Warbarbie's Avatar
    Join Date
    Nov 2004
    Location
    Rome
    Posts
    16.296

    Default

    Quote Originally Posted by Axet View Post
    No, how to?
    Boh, non so nulla di C++


Page 3 of 5 FirstFirst 12345 LastLast

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
[Output: 110.16 Kb. compressed to 94.77 Kb. by saving 15.39 Kb. (13.97%)]