Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826

    [c++/c#]Wrapper

    ciao.
    Sto sperimentando come importare funzioni e classi unmanaged(scritte in c++ unmanaged appunto) in c#.
    Per le funzioni ci sono riuscito facilmente , ma per le classi no , mi sono bloccato anche perchè cercando su google sembra sia sconsigliato esportare le classi.
    Ho visto che si usano dei wrapper , ma
    1)cos è precisamente un wrapper?
    2)perchè usare un wrapper.
    grazie.

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480
    Originariamente inviato da giuseppe500
    1)cos è precisamente un wrapper?
    2)perchè usare un wrapper.
    Vedi qui.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    scusa , alka.
    Ho letto , ma continuo ad avere un dubbio:
    perchè usare un wrapper invece di importare le classi pari pari come sono in c++ unmanaged in c#?
    Ho anche trovato una libreria , SWIG la conoscete? crea dei wrapper in automatico.
    ciao.

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480
    Originariamente inviato da giuseppe500
    perchè usare un wrapper invece di importare le classi pari pari come sono in c++ unmanaged in c#?
    Quando un sistema fa uso di componenti realizzati per un altro sistema, è tipico creare un "wrapper", cioè un contenitore all'interno del sistema di destinazione che si presenti al resto dei componenti di quel sistema come "parte nativa" ma che in realtà va a interagire con il componente nel sistema esterno attraverso funzionalità del framework di riferimento (come nel caso di P/Invoke del .NET Framework), o del linguaggio o del compilatore, o di tutti questi strumenti.

    Se scrivo una libreria di classi in C#, le posso utilizzare direttamente in VB.NET poiché ci troviamo nello stesso sistema; se devo utilizzarle in Delphi su piattaforma Win32, devo necessariamente creare - o farmi creare - un "wrapper", cioè una classe in Delphi che contenga elementi utilizzabili in questo sistema, ma che in un modo o nell'altro finiscano per interagire con quelli del sistema esterno, cioè .NET.

    Il termine "wrapper" è generico e indica questo concetto: come sia fatto e come funzioni dipende dal caso specifico, dalle piattaforme, dai linguaggi e dagli strumenti di sviluppo utilizzati.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    grazie.
    molto gentile.
    Ma se è possibile esportare le classi cosi' come sono in c++, perchè è piu' conveniente o "giusto" utilizzare un wrapper?
    Se esporto le classi c++ le utilizzerei come le uso in c++ , o no?
    scusa se sono duro di comprendonio

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480
    Originariamente inviato da giuseppe500
    Ma se è possibile esportare le classi cosi' come sono in c++, perchè è piu' conveniente o "giusto" utilizzare un wrapper?
    E' lo stesso problema che hai quando devi collegare un elettrodomestico con presa tripolare "stretta" in una spina che ha i poli "larghi": come mai non si possono collegare direttamente? Perché le interfacce fornite dai componenti non lo consentono direttamente. Tuttavia, è possibile acquistare una "riduzione" che permette di stabilire il collegamento come se quest'ultima non ci fosse. Lo stesso vale per "wrapper".


    Originariamente inviato da giuseppe500
    Se esporto le classi c++ le utilizzerei come le uso in c++ , o no?
    No, perché in altri linguaggi che hanno caratteristiche differenti da C++ l'uso di quella classe potrebbe essere complicato, richiedere l'uso di istruzioni di basso livello, richiedere l'interazione con sistemi che consentano di dialogarci, ecc. ecc.

    Il "wrapper" nasconde tutti i dettagli implementativi creando un componente che sia compatibile con il sistema di destinazione mascherando le difficoltà di interfacciamento al sistema o al linguaggio (C++) di partenza.

    E' giusto utilizzarlo perché è una tecnica senz'altro meno prona ad errori, più agevole da manutenere in caso di cambiamenti, viene fornita generalmente da chi produce il compilatore e/o l'ambiente di riferimento quindi è sicura e così via.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    grande, adesso ho capito
    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.