Visual Studio ha un sacco di supporto incorporato per l'importazione di librerie di tipi nel progetto C++ e l'utilizzo degli oggetti così definiti. Ad esempio, è possibile utilizzare la direttiva #import
:
#import "CANoe.tlb"
Ciò importare la libreria dei tipi, e convertirlo in file di intestazione e file di implementazione - anche causerà i file di implementazione per essere costruito con il progetto e l'intestazione file da includere, quindi questo è un sacco di cose magiche proprio lì.
Quindi, si ottiene un sacco di typedef per i wrapper di puntatori intelligenti per i tipi e gli oggetti definiti nella libreria dei tipi. Ad esempio, se ci fosse un CoClass chiamato Application
che ha attuato l'interfaccia IApplication
, si potrebbe fare questo:
ApplicationPtr app(__uuidof(Application));
Ciò causerebbe in fase di esecuzione, l'applicazione coclasse da creare e legato alla variabile app
, e si possono telefonare in questo modo:
app->DoSomeCoolStuff();
la gestione degli errori è fatto controllando il risultato di chiamate COM, e gettando l'eccezione _com_error appropriata, se necessario, in modo da questo implica è necessario scrivere eccezioni in modo sicuro.
fonte
2009-06-24 10:33:34
Grazie a tutti per la risposta rapida. Non ho il file DLL per l'applicazione, quindi preferirò questo approccio. Ottenere i seguenti errori di compilazione, dopo #import "CANoe.tlb" nel mio file sorgente. - carattere sconosciuto '0x1' - errore di sintassi: mancante ';' prima dell'identificatore 'A' - specificatore di tipo mancante - int assunto. Nota: C++ non supporta default-int - '{': header funzione mancante (lista formale vecchio stile?) Si prega di suggerire, se mi manca qualche passo. Esiste un modo per verificare il contenuto del file .tlb e risolvere questi errori. Grazie in anticipo –
ti suggerisco di provare a risolverlo e se non riesci a fare basta fare una domanda separata fornendo abbastanza dettagli. – sharptooth