lupusimprobus Inserito: 6 settembre 2013 Segnala Inserito: 6 settembre 2013 Buongiorno a tutti. Mi è venuta la malsana idea di vedere se riesco a realizzare un programma per comunicare con PLC Siemens sotto Linux, Utilizzo: - Ubuntu 13.04 sia 32 che 64 bit - QT creator (c++) 2.5.2 - libnodave-0.8.4.6 Per ora desidero solo riuscire ad importare i file libnodave nel mio programma e compilarlo senza errori. Questo è il file di configurazione del mio progetto: #------------------------------------------------- # # Project created by QtCreator 2013-07-22T12:11:30 # #------------------------------------------------- QT += core gui network greaterThan(QT_MAJOR_VERSION, 4): QT += widgets TARGET = LibNoDave TEMPLATE = app SOURCES += main.cpp\ winmain.cpp HEADERS += winmain.h FORMS += winmain.ui win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../libnodave-0.8.4.6/release/ -lnodave else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../libnodave-0.8.4.6/debug/ -lnodave else:symbian: LIBS += -lnodave else:unix: LIBS += -L$$PWD/../../libnodave-0.8.4.6/ -lnodave INCLUDEPATH += $$PWD/../../libnodave-0.8.4.6 DEPENDPATH += $$PWD/../../libnodave-0.8.4.6 Infatti se importo i file nel progetto, quando lo compilo mi vengono riscontrati una serie interminabili di errori. In file included from ../LibNoDave/main.cpp:5:0: ../../../../Scrivania/libnodave-0.8.4.6/nodave.h:106:2: error: #error Fill in what you need for your OS or API. ../../../../Scrivania/libnodave-0.8.4.6/nodave.h:252:1: error: 'EXPORTSPEC' does not name a type ../../../../Scrivania/libnodave-0.8.4.6/nodave.h:258:1: error: 'EXPORTSPEC' does not name a type ../../../../Scrivania/libnodave-0.8.4.6/nodave.h:318:1: error: 'EXPORTSPEC' does not name a type ... e molti altri :'( Prima di incasinarmi analizzando gli errori, c'è qualcuno che sa darmi una spiegazione dei passi da effettuare partendo da zero, per utilizzare le libnodave sotto linux? Vanno compilate, inserite in qualche cartella particolare? In java all'inizio avevo solo inserito i sorgenti drettamente nel mio progetto e tutto funzionava correttamente. Sono piuttosto ignorante in c/c++ quindi è altamente probabile che mi stia perdendo qualcosa. Qualunque aiuto, anche solo per indirizzarmi su documentazione che possa illuminarmi, sarà gradito. Grazie in anticipo per l'aiuto e... la pazienza Valerio.
dan64100 Inserita: 6 settembre 2013 Segnala Inserita: 6 settembre 2013 (modificato) Ciao, L'errore principale (riga 106), da quello che vedo è che il compilatore non ha riconosciuto la piattaforma. Prova a sostituire alla riga 39 #ifdef LINUX con #if defined(unix) || defined(__unix__) || defined(__unix) se non ti sposti verso altre piattaforme (BSD, Solaris ecc..) per le quali avresti bisogno di approfondire i check, dovrebbe funzionarti bene. Questo ti risolve anche tutti gli errori a seguire di EXPORTSPEC. Per i 64 bit nativi dovresti includere sys/stdint.h e usare solo interi portabili, le strutture di comunicazione sono tutte allineate, con i long potresti farti un bagno di dolore, vai per gradi Davide Modificato: 6 settembre 2013 da dan64100
lupusimprobus Inserita: 6 settembre 2013 Autore Segnala Inserita: 6 settembre 2013 Per prima cosa: Grazie mille!!! L'ho testato su un sistema a 32 bit e sostituendo, all'interno del file "nodavesimple.h" la riga 42 42 #ifdef LINUX con 42 #if defined(unix) || defined(__unix__) || defined(__unix) la compilazione va a buon fine. Per il 64 bit ci lavorerò su con calma ma almeno il primo step è andato. Grazie ancora.
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora