2011-06-01 14 views
14

Quiero utilizar FreeType en un proyecto de C#. Encontré esto binding, pero todavía necesito un freetype.dll. Usualmente uso una biblioteca estática en mis proyectos de C++, así que nunca compilé una. Al abrir la solución freetype (VS2010) noté que no hay configuración para una biblioteca dinámica, solo estática. Traté de hacer mi propia configuración y logré generar un freetype.dll. Si lo uso con el enlace C# obtengo una excepción, que no se encontró el punto de entrada FT_Init_FreeType. ¿Alguna idea de cómo debo ajustar el proyecto freetype para exportar esas funciones?Compilación de FreeType a DLL (a diferencia de la biblioteca estática)

Respuesta

35

Si está de acuerdo con una versión anterior (marzo de 2008), puede ir a la página FreeType for Windows, descargar el último paquete de Binarios, abrir .ZIP y extraer FreeType6.dll del directorio bin. Solo renómbrelo apropiadamente.

Si necesita una versión más reciente, aquí es cómo se puede compilar la última:

  • descarga la última fuente (2.4.6 a partir de hoy) a partir http://sourceforge.net/projects/freetype/files/freetype2/

  • abierta Visual Studio 2010 y cargue freetype.sln desde el directorio builds\win32\vc2010.

  • abrir la configuración del proyecto, y en la pestaña General, cambie Configuration Type a Dynamic Library (.dll)

  • abra el archivo ftoption.h, y añadir estas líneas (cerca de la "compilación de exportación DLL" observaciones SECCIÓN por ejemplo):

    #define FT_EXPORT(x) __declspec(dllexport) x 
    #define FT_BASE(x) __declspec(dllexport) x 
    
  • cambian la configuración de compilación del proyecto a "Liberar".

  • compilan el proyecto. Ahora debería tener un freetype246.dll en el directorio objs\win32\vc2010.

+0

esos binarios son del 9 de marzo de 2008 (versión 2.3.5 ...) La versión actual es 2.4.6 ... – Titusz

+0

@Titusz - Buen punto. He actualizado mi respuesta. Sin embargo, si usted es el infractor, sería bueno asegurarse de que la pregunta esté completa para que sepamos toda la historia antes de contestar. –

+0

esto funcionó perfectamente ... muchas gracias ... generosidad bien ganada;.) – Titusz

1

Voy a apostar que el problema es que su proyecto DLL no exporta ningún símbolo, así que mientras todo el código está ahí las direcciones de los símbolos no están en la mesa de las exportaciones para que nadie pueda obtener para ellos desde el exterior.

This question tiene una buena solución para exportar todos los símbolos en .dll sin tener que enumerarlos manualmente.

Cuestiones relacionadas