Compiling FreeType to DLL (as opposed to static library)

前端 未结 3 1061
终归单人心
终归单人心 2020-12-07 17:07

I want to use FreeType in a c# project. I found this binding, but I still need a freetype.dll. I usually use a static library in my c++ projects, so I never compiled one. Op

3条回答
  •  生来不讨喜
    2020-12-07 17:58

    The future here. This is to future readers of this thread.

    FT2 supports creating a static and dynamic library. They have solutions premade and can be found in the builds directory.

    If you are forced to use CMAKE, you will have to do what the accepted answer does. However, it is no longer current. I was not able to find said file which references dll (near the "DLL export compilation" remarks section for example):. It is now located at freetype-x.x.x\include\freetype\config\ftconfig.h around line 424. I am using MSVS 2017, so try to follow along.

    mkdir build
    cd build
    cmake -G "Visual Studio 15 2017 Win64" ..
    

    Open freetype-x.x.x\include\freetype\config\ftconfig.h and around line 424, patch the __declspec(dllexport)'s in:

    ...
      /* You can provide your own implementation of `FT_EXPORT` and        */
      /* `FT_EXPORT_DEF` here if you want.                                 */
      /*                                                                   */
      /* To export a variable, use `FT_EXPORT_VAR`.                        */
      /*                                                                   */
    
    // This is due to FT_EXPORT and FT_BASE not generating a .lib file, just a .dll
    #ifdef FT_EXPORT
    #undef FT_EXPORT
    #define FT_EXPORT(x)  __declspec(dllexport) x
    #endif
    
    #ifdef FT_BASE
    #undef FT_BASE
    #define FT_BASE(x)    __declspec(dllexport) x
    #endif
    
    #ifndef FT_EXPORT
    ...
    

    Open the solution generated by CMAKE called freetype.sln . Select freetype in the Class View. Project -> Properties -> General -> Target Extension -> set to .dll and under Project Defaults -> Configuration Type -> set to Dynamic Library (.dll)

    Make sure Release is select and Build -> Build freetype. In the 'build' directory that has the solutions, in Release you will have your freetype.dll and freetype.lib files for use. You will need those and all of freetype-.x.x.x\include.

    Good luck :)

提交回复
热议问题