Я хочу использовать FreeType в проекте С#. Я нашел это привязка, но мне все еще нужен freetype.dll. Обычно я использую статическую библиотеку в моих проектах на С++, поэтому я никогда ее не компилировал. Открыв freetype-решение (VS2010), я заметил, что нет никакой конфигурации для динамической библиотеки - просто статичной. Я попытался создать свою собственную конфигурацию и получил ее для создания freetype.dll. Если я использую его с С# -связыванием, я получаю исключение, что точка входа FT_Init_FreeType не найдена. Любая идея, как я должен настроить проект freetype для экспорта этих функций?
Компиляция FreeType в DLL (в отличие от статической библиотеки)
Ответ 1
Если вы в порядке со старой версией (март 2008), вы можете перейти на страницу FreeType для Windows, загрузить последние бинарные файлы пакет, откройте .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
.
Ответ 2
Я готов поспорить, что проблема в том, что ваш проект DLL не экспортирует никаких символов, поэтому, хотя весь код находится там, адреса символов не находятся в таблице экспорта, поэтому никто не может получить от них снаружи.
Этот вопрос имеет хорошее решение для экспорта всех символов в .dll без необходимости их вручную перечислять.