Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Codice cross-platform: come fare per gli header?

    salve!
    vorrei scrivere un programma in C++, che fa uso anche delle API di OpenGL.
    Vorrei farlo portabile, quindi deve poter girare su Windows, Mac e Linux.
    Per questo, oltre alle librerie OpenGL uso le Glut, che gestiscono la finestra e gli eventi in modo indipendente dal sistema operativo.
    E fin qui ci siamo...
    Ma all'inizio del programma oltre a glut.h, devo per forza includere anche windows.h, altrimenti mi da' piu' di 100 errori (giustamente).
    Ma allora come fo a fare un codice portabile?
    C'e' un modo per fare un controllo all'avvio del programma, in modo da vedere che sistema operativo si sta usando, e includere, in base al risultato, una header o un altro?
    (per esempio, se viene rilevato Windows viene incluso windows.h, con Mac qualcos'altro e con Linux qualcos'altro ancora...)
    bye!

  2. #2
    ciao

    se usi C++ non puoi decidere al momento dell'esecuzione quali librerie usare...devi deciderlo al momento della compilazione

    in questo caso di puoi definire delle variabili globali da usare in questo modo

    #define LINUX
    oppure
    #define WINDOWS

    e poi nei vari include

    #ifdef LINUX
    #include <stdio.h>
    #endif

    #ifdef WINDOWS
    #include <windiws.h>
    #endif

    questo naturalmente lo puoi usare in tutte le parti di codice che prendono "una via differente" a seconda del S.O. utilizzato!

    naturalmente alla fine ti basterà definire "LINUX" o "WINDOWS" a seconda del S.O. x il quale stai compilando!


    "durante i primi 5 miuti di pioggia nel bosco c'è ancora asciutto, poi quando smetterà di piovere nel bosco cadranno gocce per 5 minuti.....la natura ha un'ottima memoria..."

    http://www.kumbe.it

  3. #3
    grazie mille!
    Per caso sapresti anche come si fa per rilevare il sistema operativo che si sta usando?
    le variabili LINUX e WINDOWS come devo definirle?

  4. #4
    linguaggio anche nel titolo
    leggi il regolamento
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  5. #5
    ehmmm

    forse non mi sono spiegato!

    le variabili le definisci con

    #define LINUX

    già fatto!

    ti consiglio di fare

    #define LINUX
    #define WINDOWS

    poi commenti quella che non ti interessa con

    //#define WINDOWS

    il fatto di capire quale sistema si sta utilizzando non serve ! o forse non capisco io... :master:

    quando compili x linux sarai in linux (decommenti //#define LINUX)
    quando compili x winzozz sarai in winzozz (decommenti //#define WINDOWS)

    ...ok?
    "durante i primi 5 miuti di pioggia nel bosco c'è ancora asciutto, poi quando smetterà di piovere nel bosco cadranno gocce per 5 minuti.....la natura ha un'ottima memoria..."

    http://www.kumbe.it

  6. #6
    Aaaaah! agg' capit'
    thank you

  7. #7
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    In realta se vuoi fare un programma portabile con C++ non ti devi preccupare solo se stai su linux o su windows, ma anche quale compilatore stai usando. Inoltre le macro che identificano la piatttaforma sono gia definite dal compilatore stesso, quindi fa una ricerca in modo da sapere quali sono queste macro predefinite (tipo WIN32 per windows) per usarle correttamente.

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  8. #8
    ok grazie!
    ma se io il codice sorgente lo compilassi direttamente sul sistema in cui lo usero'?
    In questo caso non dovrei preoccuparmi del compilatore, oppure si?

  9. #9
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Con C++ un programma deve sempre essere compilato sul sistema su cui lo userai, cioè se va usato su windows va compilato su windows, e se va usato su linux va compilato su linux.

    Se hai intenzione di poterlo distribuire su diverse piattaforme, allora devi prendere le dovute precauzioni; ovviamente puoi semplificare il tutto scegliendo un compilatore per win (visualc o mingw o borland, o altri disponibili) e un compilatore per linuz (gcc è quello in assoluto piu diffuso). In questo caso tra i requisiti richiesti dal tuo programma c'è che si usino proprio quei compilatori per compilarlo. Se tu non devi distribuire i sorgenti, ma direttamente l'eseguibile, allora questa è una buona soluzione, perkè sarai sempre tu a compilare il tuo programma con i compilatori che hai scelto.

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.