Компиляция FreeType в DLL (в отличие от статической библиотеки) - PullRequest
15 голосов
/ 02 июня 2011

Я хочу использовать FreeType в проекте c #. Я нашел эту привязку , но мне все еще нужен freetype.dll. Я обычно использую статическую библиотеку в своих проектах на c ++, поэтому я никогда не компилировал ее. Открывая решение freetype (VS2010), я заметил, что для динамической библиотеки нет конфигурации - только статические. Я попытался сделать свою собственную конфигурацию и получил ее для создания freetype.dll. Если я использую это с привязкой c #, я получаю исключение, что точка входа FT_Init_FreeType не была найдена. Любая идея, как я должен настроить проект freetype, чтобы экспортировать эти функции?

Ответы [ 2 ]

37 голосов
/ 12 сентября 2011

Если у вас все в порядке со старой версией (март 2008 г.), вы можете перейти на страницу FreeType для Windows , загрузить последнюю версию пакета Binaries, открыть .ZIP и извлечь FreeType6.dll изкаталог bin.Просто переименуйте его соответствующим образом.

Если вам нужна более свежая версия, вот как вы можете скомпилировать последнюю версию:

  • загрузите последний источник (2.4.6 по состоянию насегодня) с http://sourceforge.net/projects/freetype/files/freetype2/

  • откройте Visual Studio 2010 и загрузите freetype.sln из каталога builds\win32\vc2010.

  • откройте конфигурацию проекта ина вкладке General измените Configuration Type на Dynamic Library (.dll)

  • , откройте файл ftoption.h и добавьте эти строки (например, рядом с разделом примечаний «Компиляция экспорта DLL»)):

    #define FT_EXPORT(x)  __declspec(dllexport) x
    #define FT_BASE(x)    __declspec(dllexport) x
    
  • изменить конфигурацию компиляции проекта на «Release».

  • скомпилировать проект.Теперь у вас должно быть freetype246.dll в каталоге objs\win32\vc2010.

1 голос
/ 13 сентября 2011

Держу пари, что проблема в том, что ваш проект DLL не экспортирует никаких символов, поэтому, пока весь код находится там, адреса символов не находятся в таблице экспорта, поэтому никто не может получить к ним доступ изoutside.

Этот вопрос имеет хорошее решение для экспорта всех символов в .dll без необходимости перечислять их вручную.

...