Я полностью озадачен тем, как получить FreeType 2.4.8, скомпилированный как статическая библиотека, и использовать его из моего приложения D в Windows.Я попытался запустить его с помощью objconv, coff2omf, и попытался extern(C)
/ extern(System)
, и т. Д., Но ничего не работает.Я получаю символ не найденные ошибки, нарушения доступа и просто кучу бесполезных ошибок.
Как я могу обойти это?Правильно ли я использую pragma lib
для ссылки на мои статические библиотеки и как мне надежно конвертировать статические библиотеки COFF в OMF, которые может использовать DMD / Optlink?
РЕДАКТИРОВАТЬ: Некоторые примерычто я пытался сделать:
- Компиляция исходного кода FreeType с VS 2010 в виде статической библиотеки, компоновка в моем D-коде с помощью Pragma lib.(Возвращается ошибка типа «неизвестный формат библиотеки»)
- То же, что и выше, но преобразование в формат OMF с использованием objconv и затем попытка связать с прагмой lib.(Успешно скомпонован, но все еще не может вызывать функции.)
- Скомпилировал DLL из источника FreeType, запустил ее через implib для создания библиотеки импорта, попытался связать с pragma lib.(Связано успешно, но невозможно вызвать какие-либо функции из-за ошибок «попытка доступа к привилегированной функции» или «нарушение прав доступа»)
- Я попытался определить прототипы функций как все: extern (System), extern (В) и extern (винда).Первый и третий искажают имена функций внешних функций, так что они не соответствуют статическим библиотекам, а второй компилируется, но я получаю нарушения доступа во время выполнения, когда я на самом деле пытаюсь вызвать функции.
Я могу заставить его работать с помощью динамических библиотек и загрузки символов, но я бы предпочел не требовать кучу внешних зависимостей при развертывании моего проекта.