2013-04-24 10 views
8

Ho bisogno di una libreria di immagini e ho cercato FreeImage, http://freeimage.sourceforge.net/. Voglio collegarlo staticamente alla mia applicazione.Collegamento di FreeImage come libreria statica in VS2010?

Ho provato a scaricare i binari ea collegarlo, ma ottengo gli errori del linker 2019 quando provo a chiamare le loro funzioni, anche se sono positivo l'ho collegato correttamente.

Quindi ho provato a scaricare la loro fonte, convertito il loro "FreeImageLib.2008" in VS2010 e lo abbiamo creato. Costruisce bene da solo, ma ho ancora lo stesso problema durante il collegamento, la mia applicazione che lo usa continua a lamentarsi degli errori del linker.

Ho anche impostare tutta la configurazione del progetto per abbinare i miei altri progetti, quindi non c'è alcun conflitto con/MDd o/MTd, ecc ..

ho fatto qualche scavo nella loro origine e ci sono le macro come "FREEIMAGE_LIB "che suggerisce che dovrebbe essere definito quando si costruisce una libreria statica, e viene definito, ma ancora non funziona.

Ho cercato su Google e non riesco a trovare risposte solide a questo problema. La risposta su Getting FreeImage to work with Visual Studio 2010 non fa differenza; Ho già definito la macro prima di includere l'intestazione o come argomento del preprocessore ma non funziona.

Questa libreria non è pensata per essere utilizzata come libreria statica o quale potrebbe essere il problema? Qualcuno è riuscito a collegare in modo statico FreeImage su VS2010 +?

Grazie

risposta

11

Sì, sono stato in grado di collegare FreeImage staticamente su diverse versioni di Visual Studio. Qui descrivo come faccio questo di solito.

Con FreeImage, per impostazione predefinita, abbiamo 8 opzioni di collegarlo per la vostra applicazione:

FreeImage - a collegamento dinamico (avrete bisogno di dll).

FreeImageLib - collegamento statico.

Ciascuno di questi può essere realizzato con "Debug" o con configurazioni "Release" e per piattaforme Win32 o Win64.

Così, supponiamo che abbiamo bisogno (Static & & Win32 & & Debug) e (Static & & Win32 & & Release) varianti per la nostra applicazione. Anche nella nostra app usiamo dinamico Runtime Library (per impostazione predefinita, FreeImage impostati per statico per qualche motivo) Come di solito ottenuto:

  • Scaricare e disfare la versione fresca (o almeno ripulire vecchio distib)

  • Aperto FreeImage.2008.sln selezionare TUTTI i 10 progetti con MAIUSC + clic. Quindi in "Proprietà progetto/C++/Generazione codice" scegliamo/MDd per la configurazione "Debug" e/MD per "Rilascio".

  • poi andiamo a "Menu/costruire/Generazione batch", selezionare:

    FreeImageLib | Debug | Win32

    FreeImageLib | Release | Win32

e premere il tasto "Build".

  • Attendere la configurazione scelta. Tutto quello che ci serve saranno copiati nella cartella FreeImage\Dist

  • nel file di controllo delle cartelle FreeImage\Dist: delete.me FreeImage.h FreeImage.lib FreeImaged.lib Controllare la data e l'ora di creazione. Deve essere appena sfornato e caldo. In caso contrario, copiali da FreeImage\Source\FreeImageLib\Debug e FreeImage\Source\FreeImageLib\Release.

  • Nell'applicazione principale aggiungere per includere e lib FreeImage\Dist e collegamento FreeImaged.lib alle configurazioni di debug e FreeImage.lib alle versioni.
  • Includere nel file sorgente:

    #define FREEIMAGE_LIB

    #include "FreeImage.h"

  • tenta di chiamare FreeImage_Initialise(); FreeImage_DeInitialise();

  • Dovrebbe funzionare

Felice codifica!

+0

Ha funzionato per me. Tra gli altri (Magick ++, OIIO), FreeImage è il più facile da usare. – pelesl

Problemi correlati