Riferimenti DLL in Visual C ++

Ho avuto esperienza C ++ ma non MSVC.

Quello che sto cercando di fare è incorporare un file .dll da un progetto open source nel mio progetto. Il codice è disponibile e l’ho creato. Ho il .dll e il .lib che, a quanto ho capito, è richiesto per i progetti C ++.

Ora purtroppo non esiste un semplice “Aggiungi riferimento”, rilasciare la mia .dll in una directory di inclusione e aggiungerla alla mia soluzione. Ho modificato le pagine delle proprietà del progetto, l’opzione di inclusione aggiuntiva di C / C ++ e aggiungendo il .lib come dipendenza aggiuntiva dal linker. Ho creato una directory include per dll e lib all’interno del mio albero delle soluzioni.

Il mio problema è quando tento di includere i file di intestazione dalla documentazione, l’output VS sputa i messaggi di errore. Ora mi rendo conto che sto usando la combinazione dll / lib e che i file .h non sono presenti nella mia soluzione, quindi come faccio ad aggiungere gli include appropriati? Sto usando anche QT toolkit che funziona, ma il modo in cui aggiungo l’altra intestazione / dll dalla libreria open source mi sfugge.

Qualcuno può indicarmi la giusta direzione.

Devi fare un paio di cose per usare la libreria:

  1. Assicurati di avere * .lib e * .dll dalla libreria che desideri utilizzare. Se non hai il * .lib, salta # 2

  2. Metti un riferimento al * .lib nel progetto. Fare clic con il pulsante destro del mouse sul nome del progetto in Esplora soluzioni, quindi selezionare Proprietà di configurazione-> Linker-> Inserisci e inserire il nome della lib nella proprietà Dipendenze aggiuntive.

  3. Devi accertarti che VS possa trovare la lib che hai appena aggiunto, quindi devi andare nel menu Strumenti e selezionare Opzioni … Quindi in Progetti e soluzioni selezionare Directory VC ++, modificare l’opzione Directory libreria. Da qui è ansible impostare la directory che contiene la nuova libreria selezionando “File di libreria” nella casella di riepilogo “Mostra directory per:”. Basta aggiungere il percorso al tuo file lib nell’elenco delle directory. Se non hai una lib puoi ometterlo, ma mentre sei qui dovrai anche impostare la directory che contiene anche i tuoi file di intestazione sotto ‘Include Files’. Fallo nello stesso modo in cui hai aggiunto la lib.

Dopo aver fatto ciò dovresti essere bravo a farlo e puoi usare la tua biblioteca. Se non hai un file lib puoi comunque usare la dll importandola tu stesso. Durante l’avvio delle applicazioni è ansible caricare esplicitamente la DLL chiamando LoadLibrary (consultare: http://msdn.microsoft.com/en-us/library/ms684175(VS.85).aspx per ulteriori informazioni)

Saluti!

MODIFICARE

Ricordati di usare #include invece di #include “foo.h”. Il primo cerca il percorso di inclusione. Quest’ultimo utilizza i file di progetto locali.

Le directory di inclusione aggiuntive sono relative alla dir del progetto. Questa è normalmente la directory in cui si trova il file di progetto * .vcproj. Immagino che nel tuo caso devi aggiungere solo “include” alle tue directory di inclusione e libreria.

Se si desidera essere sicuri di quale sia la directory del progetto, è ansible controllare il valore della macro $ (ProjectDir). Per farlo vai su “C / C ++ -> Additional Include Directories”, premi il pulsante “…” e nella finestra di dialogo pop-up premi “Macro >>”.

Si menziona l’aggiunta della directory di inclusione aggiuntiva (C / C ++ | Generale) e della dipendenza della lib aggiuntiva (Linker | Input), ma è stata aggiunta anche la directory della libreria aggiuntiva (Linker | Generale)?

Includere un messaggio di errore di esempio potrebbe anche aiutare le persone a rispondere alla domanda poiché non è nemmeno chiaro se l’errore si verifica durante la compilazione o il collegamento.