2011-06-01 10 views
14

Desidero utilizzare FreeType in un progetto C#. Ho trovato questo binding, ma ho ancora bisogno di un freetype.dll. Di solito uso una libreria statica nei miei progetti C++, quindi non ne ho mai compilato uno. Aprendo la soluzione freetype (VS2010) ho notato che non esiste una configurazione per una libreria dinamica, solo quelle statiche. Ho provato a creare la mia configurazione e ho ottenuto di generare un freetype.dll. Se lo uso con il C# -binding ottengo un'eccezione, che il punto di ingresso FT_Init_FreeType non è stato trovato. Qualche idea su come devo adattare il progetto freetype per esportare quelle funzioni?Compilazione di FreeType a DLL (a differenza della libreria statica)

risposta

35

Se si sta bene con una versione precedente (marzo 2008), è possibile andare alla pagina FreeType for Windows, scaricare l'ultimo pacchetto di binari, aprire il file .ZIP ed estrarre FreeType6.dll dalla directory bin. Basta rinominarlo in modo appropriato.

Se avete bisogno di una versione più recente, ecco come si può compilare l'ultima:

  • scaricare l'ultima fonte (2.4.6 ad oggi) da http://sourceforge.net/projects/freetype/files/freetype2/

  • aprire Visual Studio 2010 e caricare freetype.sln dalla directory builds\win32\vc2010.

  • aprire la configurazione del progetto, e nella scheda General, modificare Configuration Type al Dynamic Library (.dll)

  • aprire il file ftoption.h, e aggiungere queste righe (nei pressi del "compilation di esportazione DLL", osserva la sezione, per esempio):

    #define FT_EXPORT(x) __declspec(dllexport) x 
    #define FT_BASE(x) __declspec(dllexport) x 
    
  • modificare la configurazione della compilazione del progetto su "Rilascio".

  • compila il progetto. Ora dovresti avere un freetype246.dll nella directory objs\win32\vc2010.

+0

questi file binari sono a partire dal 9 marzo 2008 (versione 2.3.5 ...) La versione corrente è 2.4.6 ... – Titusz

+0

@Titusz - Buon punto. Ho aggiornato la mia risposta. Tuttavia, se sei il downvoter, sarebbe bello assicurarti che la domanda sia completa, quindi conosciamo tutta la storia prima di rispondere. –

+0

questo ha funzionato perfettamente ... grazie mille ... tanta ben meritata;) – Titusz

1

Io vado a scommettere che il problema è che il progetto DLL non esporta alcun simbolo, così mentre tutto il codice è in là gli indirizzi dei simboli non sono nella tabella delle esportazioni in modo che nessuno può ottenere a loro dall'esterno.

This question ha una buona soluzione per esportare tutti i simboli in una .dll senza doverli elencare manualmente.

Problemi correlati