Vai al contenuto
PLC Forum


Libnodave + Linux + Qt Creator


Messaggi consigliati

Inserito:

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.


Inserita: (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: da dan64100
Inserita:

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.

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 account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...