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

    [.net] managed and unmanaged type

    Ciao a tutti,
    mi trovo in questa situazione:
    1) sto scrivendo un' applicazione di tipo managed in cui richiamo le funzioni di una libreria di tipo umanaged.
    2) una funzione di questa libreria ha al suo interno due parametri: il puntatorte a una callback e il puntatore alla mia classe chiamante).
    3) Per poter passare il puntatore alla classe mi apposggio a gcroot.

    ------------------------------------------------------------------
    Questa è la riga di chiamata alla funzione della libreria unmanaged:

    error_status err_reg_event=funzioneChiamata(miaClasse::cdeclEve ntCallback,this->_native_handle);

    con:

    1) cdeclEventCallback= funzione di callback implementata nella mia classe con questa sintassi

    void miaClasse::cdeclEventCallback(const event_id eventID, const Event *eventData, void* customData )
    {
    det_pix=(gcroot<miaClasse^> )(customData);
    det_pix->processEvent( eventID, eventData );
    }

    2) this->_native_handle è l'handle dell' oggetto che devo passare nella funzione della libreria [this->_native_handle = new gcroot<miaClasse^>();] .
    La funzione lo userà per i suoi lavori e poi me lo ritorna come parametro della funzione di callback.
    A questo punto, implementando la funzione di callback, ho pensato che customData (tornato come parametro nella funzione di callback) dovesse essere castato, ma così facendo mi continua a dare l'errore

    error C2440: 'type cast' : cannot convert from 'void *' to 'gcroot<T>'

    Spero di essere risucito a spiegare il problema.
    Qualcuno sa darmi qualche indicazione su come risolvere il problema, oppure indicazioni su qualche pagina in cui venga spiegato bene come far lavorare liberire unmanaged con applicaizoni managed?
    Ringrazio in anticipo per ogni tipo di suggerimento :-)
    re dei giovani

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301

    Moderazione

    Il linguaggio va indicato anche nel titolo.
    Trattandosi apparentemente di C++, sposto nel forum più generico.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  3. #3
    chiedo scusa :-)
    re dei giovani

  4. #4
    Per completezza e in caso qualcuno possa aver il mio stesso tipo di problema di passaggio di delegate da codice unmanaged a codice managed.

    Ho trovato informazioni utili alla pagina:

    http://msdn.microsoft.com/en-us/library/367eeye0(v=VS.90).aspx

    Oltre a questi esempi che spiegano abbastanza bene è stato utile anche andare a vedere le calling convention per settare l'attributo corretto nella definizione del delegate nel mio codice gestito.

    Ciauz
    re dei giovani

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.