Kompilowanie FreeType do DLL (w przeciwieństwie do biblioteki statycznej)

Chcę używać FreeType w projekcie c#. Znalazłem to wiążące , ale nadal potrzebuję freetype.dll. Zwykle używam statycznej biblioteki w moich projektach c++, więc nigdy jej nie skompilowałem. Otwierając freetype-solution (VS2010) zauważyłem, że nie ma konfiguracji dla biblioteki dynamicznej - tylko statycznej. Próbowałem zrobić własną konfigurację i dostałem go do generowania freetype.dll. Jeśli używam go z powiązaniem c#, dostaję wyjątek, że nie znaleziono punktu wejścia FT_Init_FreeType. Dowolne pomysł jak muszę dostosować projekt freetype, aby wyeksportować te funkcje?

Author: B_old, 2011-06-02

2 answers

Jeśli nie masz nic przeciwko starej wersji (marzec 2008), możesz wejść na stronę FreeType Dla Windows , pobrać najnowszy pakiet binarny, otworzyć .ZIP i rozpakuj FreeType6.dll z katalogu bin. Po prostu zmień odpowiednią nazwę.

Jeśli potrzebujesz nowszej wersji, oto jak możesz skompilować najnowszą wersję:

  • Pobierz najnowsze źródło (2.4.6 od dziś) z http://sourceforge.net/projects/freetype/files/freetype2/

  • Otwórz Visual Studio 2010 i załaduj freetype.sln z katalogu builds\win32\vc2010.

  • Otwórz konfigurację projektu i w zakładce General Zmień Configuration Type na Dynamic Library (.dll)

  • Otwórz plik ftoption.h i dodaj te wiersze (na przykład w sekcji Uwagi "DLL export compilation"):

    #define FT_EXPORT(x)  __declspec(dllexport) x
    #define FT_BASE(x)    __declspec(dllexport) x
    
  • Zmień konfigurację kompilacji projektu na "Release"

  • Skompiluj projekt. Powinieneś teraz mieć freetype246.dll w katalogu objs\win32\vc2010.

 37
Author: Simon Mourier,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-22 08:37:35

Założę się, że problem polega na tym, że twój projekt DLL nie eksportuje żadnych symboli, więc podczas gdy cały kod jest tam, adresy symboli nie są w tabeli eksportu, więc nikt nie może dostać się do nich z zewnątrz.

To pytanie ma dobre rozwiązanie, aby wyeksportować wszystkie symbole w .dll bez konieczności ręcznego wyświetlania ich listy.

 1
Author: Miguel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 10:29:46