Visualizzazione dei risultati da 1 a 5 su 5

Discussione: [c++]dll e include

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826

    [c++]dll e include

    ciao.
    Sto procedendo con un progetto che usa qt e opengl e sto cercando di utilizzare delle dll separate ognuna che svolge dei macroproblemi.
    per semplificare prendiamo proprio queste due dll : Mygraphics.dll e Myqt.dll in cui ho inserito codice relativo alle due categorie.

    per farla breve:
    Ho pensato di gestire la cosa creando e condividendo tra le due librerie delle classi genitori , astratte ma alla base dela gerarchia.

    ma non so se è giusto e ve lo chiedo .

    e questo succede semppre quando una funzione che fa dela grafica opengl e sta in mygraphics.dll è usata dal widget qt ad es ma ci sono mille esempi di questo.

    adesso condivido i .h tra piu dll!?
    ho tutto ben organizzato nel file system , solo che a volte devo fare cose del tipo:
    MyGraphics.h in Mygraphics.dll
    #include "../myqt/widgetqt.h

    è sbagliato?
    o le dll non dovrebbero collaborare tra loro tramite i .h?


    sto ripensando al metodo che mi ha consigliato shodan di avere dll che sono codice,e che espongono gli oggetti tramite delle factory(non so se ho capito bene shodan il tuo metodo)
    ma in questo caso utilizzando quel metodo il problema ci sarebbe lo stesso?

    non è un problema per cui non riesco a lavorare, se includo i .h come detto sopra funziona, è un problema per cui non riesco a lavorare bene(.h sparsi e condivisi tra piu dll sono un poccio penso, o almeno cosi mi sembra) e per questo ve lo chiedo.

    grazie.

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Non te la prendere, ma mica ho capito che problema hai.
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    scusa shodan.
    Ho un progetto diviso in piu dll.
    Mi chiedevo se è corretto che in una dll che usa un altra dll si possano creare degli include incrociati:
    1)dll 1 usa file do.h di dll 2
    2)dll2 usa file works.h di dll 1 ecc....

    ma forse mi sono spiegato ancora male:

    ho varie cartelle per ogni dll che è un progetto di vs 2010 (con i file .cpp e .h che formano la dll) e in un progetto dll devo accedere ad un altra cartella di un altra dll per pescare gli header e utilizzare le funzioni di quell a altra dll.

    alla fine se continuo cosi si crea un casino mai visto.

    volevo chiederti se c'è una soluzione a questo o se ci sono delle regole standard da seguire per non creare il casino.

    ciao.
    grazie.

  4. #4
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Ok. Beh, no: non ci sono regole standard. Del resto se Dll1 ha bisogno di accedere a dati di Dll2, in Dll1 devi per forza includere Dll2.h
    Puoi però isolare al massimo la dipendenza includendo Dll2.h non in Dll1.h, ma nei vari .cpp (e solo dove ti serve) di Dll1.

    Un modo abbastanza comune di procedere è di creare dei .h pubblici e dei .h privati.
    Es.
    Dll1impl.h include Dll1.h. Dll2impl.h include Dll2.h, Dll1impl.h include Dll2impl.h.
    Questo fa si di avere solo le astrazioni in Dll1.h e Dll2.h, permettendo tutti i vari incroci sottobanco.
    Questo a livello di sorgenti.

    Se invece devi usare Dll2.dll per creare Dll1.dll, devi includere dll2.h nei vari .cpp che ne abbisognano. Non è che hai molta scelta: se l'include file è in una determinata cartella, li devi andarlo a prendere.
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    grazie 1000 shodan.
    Il casino nella mia testa nasce dal fatto che ho visto un progetto opensource che lavora cosi:

    1)si definiscono le dipendenze dei progetti nella soluzione : prog1 ha bisogno di prog2 ecc.. in modo che tutto sia compilato con un filo logico
    2)Ogni progetto all' evento di postbuild copia tutti i suoi .h in una cartella comune a tutti i progetti : sdk\include
    3)i progetti vanno a prendersi i .h da questa cartella che è inclusa nelle proprietà include di ogni progetto.

    puo essere un buon metodo ?

    il metodo dei .h publici e privati non lo conoscevo grazie.
    ciao.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.