Errori libreria NXT++

di il
6 risposte

Errori libreria NXT++

Salve a tutti, mi sono iscritto per cercare aiuto per riuscire ad utilizzare questa libreria. Sono nuovo in C++ (e ho ancora mooolto da imparare ) ma vengo dall'AutoIT, con il quale me la cavo abbastanza.
Tornando alla questione per cui ho aperto il topic:
Io possiedo il robot Lego Mindstorm NXT (Non è un gioco, anche se è Lego. Cercate su youtube ) e stavo cercando di controllarlo direttamente da computer. Per farlo esiste fortunatamente una libreria, però è abbastanza vecchia e, mi sembra, abbia svariati problemi.
Questa è la loro homepage. Per ora sto cercando di compilare ancora il mio primo programma con questo codice, derivato da uno da loro fornito in un tutorial:

#include "NXT++.h"

 
int main()
{
    Comm::NXTComm comm;
    if(NXT::Open(&comm)) //initialize the NXT and continue if it succeeds
    {
        //Here's where we add the fun stuff, but we'll hold off for now
        NXT::Close(&comm); //close the NXT
    }
    return 0;
}

Quando provo a compilarlo Visual C++ 2010 (la versione express) restituisce:

1>------ Build started: Project: OpenCube, Configuration: Debug Win32 ------
1>Main.obj : error LNK2019: unresolved external symbol "void __cdecl NXT::Close(class Comm::NXTComm *)" (?Close@NXT@@YAXPAVNXTComm@Comm@@@Z) referenced in function _main
1>Main.obj : error LNK2019: unresolved external symbol "bool __cdecl NXT::Open(class Comm::NXTComm *)" (?Open@NXT@@YA_NPAVNXTComm@Comm@@@Z) referenced in function _main
1>C:\Users\federico\Documents\Visual Studio 2010\Projects\OpenCube\Debug\OpenCube.exe : fatal error LNK1120: 2 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Io non riesco a capire come mai dia errore il linker, dato che ho specificato gli include necessari.
Grazie a tutti in anticipo per le risposte

PS Se servisse posso postare il progetto completo.

6 Risposte

  • Re: Errori libreria NXT++

    Il linker si aspetta le librerie .lib; il compilatore i file .h.
    Aggiungi le librerie al progetto e sei a posto (ammesso che siano compatibili).
  • Re: Errori libreria NXT++

    Avevo già aggiunto NXT++d.lib, come indicato nel tutorial fatto dagli autori in "Additional Dipendeces".
  • Re: Errori libreria NXT++

    Non mi pare che la libreria sia fornita con il pacchetto (almeno quello scaricato dal loro sito), quindi anche se la scrivi come suggerito continua a non esserci.
    Tentare poi di ricompilare il progetto è uno strazio, visto che la conversione va a buon fine, ma la compilazione da cose turche sui path che il progetto si aspetta.
    Per essere usabile fai così:
    1) crea un progetto come suggerito dal tutorial, (io ho preferito non creare un empy projects, ma solo togliere la spunta ai file header precompilati).
    2) Nei source files aggiungi: ntx++.cpp, comm.cpp e fantom.lib
    3) imposta il percorso degli include file come suggerito dal tutorial.
    4) I file .cpp della libreria sia aspettano i rispettivi header file nella stessa directory. Se hai settato correttamente il path degli include file eventualmente puoi cambiare da #include "NXT++.h" a #include <NXT++.h> (personalmente ho buttato tutto nella stessa directory del progetto).
    5) Project -> Properties -> C/C++ -> Advanced -> Disabled specific Warnings: imposta 4996 per evitare un marasma di warning strampalati.
    Se tutto è a posto dovresti avere qualcosa del genere:
    
    1>------ Rebuild All started: Project: test_nxt, Configuration: Debug Win32 ------
    1>  test_nxt.cpp
    1>  stdafx.cpp
    1>  nxt++.cpp
    1>c:\users\flavio\desktop\nxtpp0-6\final\src\nxt++.cpp(342): warning C4101: 'volatilityRatio' : unreferenced local variable
    1>  comm.cpp
    1>c:\users\flavio\desktop\nxtpp0-6\final\src\comm.cpp(377): warning C4804: '>=' : unsafe use of type 'bool' in operation
    1>  Generating Code...
    1>  test_nxt.vcxproj -> C:\share2\Test\test_nxt\Debug\test_nxt.exe
    ========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========
    
  • Re: Errori libreria NXT++

    Il .lib l'ho presto dalla versione managed (la 0.5) che si trova sul loro progetto soruceforge. Ora provo come dici tu, grazie!

    --edit-- Mi viene un dubbio: nella sezione del linker (Dove andrebbero NXT++.lib etc)cosa metto? Devo crearmi io il file .lib? Grazie ancora per la pazienza
  • Re: Errori libreria NXT++

    Ma scusate se mi intrometto.. Come è possibile che riuscite a sapere che il robot contiene comandi in C++? E come fate a mandare i comandi dal pc?

    Dubbi miei..
  • Re: Errori libreria NXT++

    DavSen3 ha scritto:


    Ma scusate se mi intrometto.. Come è possibile che riuscite a sapere che il robot contiene comandi in C++? E come fate a mandare i comandi dal pc?

    Dubbi miei..
    Il robot è stato sviluppato apposta per essere controllabile via usb oppure bluetooth. Esistono anche dei programmi per farlo da android.
Devi accedere o registrarti per scrivere nel forum
6 risposte