Есть freetype 2.3.6, взятый со странички GTK++, внутри архива помимо инклюдов есть dll и библиотека линковки к ней (libfreetype.dll.a freetype6.dll).
Пишу тестовый файлик вида:
Создаю проект, консольное приложение win32, в настройках проекта задаю пути к include и lib, добавляю линковку с libfreetype.dll.a, к полученному экзешнику подкладываю freetype6.dll. Запускаю — ошибка еще до входа в main(). Динамически, при этом, библиотека подключается, функции импортируются.
Собираю gcc (gcc version 3.4.5 (mingw-vista special v3)): e:/mingw/gcc main.cpp -Iinclude -Iinclude/freetype -Llib -lfreetype.dll -o ft_test.exe. Подкладываю либу, запускаю — всё отлично.
Если собираю freetype из исходников — всё работает и подключается в стдийных проектах.
Здравствуйте, nosuchip, Вы писали:
N>внутри архива помимо инклюдов есть библиотека линковки к ней libfreetype.dll.a N>в настройках проекта задаю пути к include и lib, добавляю линковку с libfreetype.dll.a N>Собираю gcc. Подкладываю либу, запускаю — всё отлично. N>Если собираю freetype из исходников — всё работает и подключается в стдийных проектах. N>Уважаемая редакция, в чем подземный стук?
В том, что студия наверное не понимает формат .a файлов, это формат gcc. Но тогда странно, что она вообще что-либо слинковала. Для студии нужды .lib файлы
Здравствуйте,
N>>Уважаемая редакция, в чем подземный стук? T>В том, что студия наверное не понимает формат .a файлов, это формат gcc. Но тогда странно, что она вообще что-либо слинковала. Для студии нужды .lib файлы
Да нет на самом деле, студия прекрасно понимает и .a файлы.
У меня нет опыта с freetype и я могу ошибаться, но как подсказывает опыт проблема в несовпадении формата функций. Скорее всего виновата стандартная библиотека и если поиграться в настройках всего проекта ключиками /MT /MD и всеми другими похожими на них, то можно заставить работать и имеющуюся либу. Но гораздо лучше пересобрать ее под себя из исходников с нужными параметрами.
Здравствуйте, Anatoliy.Sviridenkov, Вы писали:
AS>Здравствуйте,
N>>>Уважаемая редакция, в чем подземный стук? T>>В том, что студия наверное не понимает формат .a файлов, это формат gcc. Но тогда странно, что она вообще что-либо слинковала. Для студии нужды .lib файлы
AS>Да нет на самом деле, студия прекрасно понимает и .a файлы. AS>У меня нет опыта с freetype и я могу ошибаться, но как подсказывает опыт проблема в несовпадении формата функций. Скорее всего виновата стандартная библиотека и если поиграться в настройках всего проекта ключиками /MT /MD и всеми другими похожими на них, то можно заставить работать и имеющуюся либу. Но гораздо лучше пересобрать ее под себя из исходников с нужными параметрами.
Вот этого как раз делать очнб не хочется: дело в том, что freetype мне нужен для cairo, а последняя требует fontconfig, который от фритайпа и зависит. Пересобрать последний под виндами — достаточно нетривиальная задача, по-крайней мере ни одно из описаний собрки его под виндами не сработало.
Здравствуйте, Anatoliy.Sviridenkov, Вы писали:
AS>Здравствуйте,
N>>>Уважаемая редакция, в чем подземный стук? T>>В том, что студия наверное не понимает формат .a файлов, это формат gcc. Но тогда странно, что она вообще что-либо слинковала. Для студии нужды .lib файлы
AS>Да нет на самом деле, студия прекрасно понимает и .a файлы. AS>У меня нет опыта с freetype и я могу ошибаться, но как подсказывает опыт проблема в несовпадении формата функций.
Сейчас проверил (понимаю слабость такой аналогии) по аналогии с собранной cairo, к ней так же поставляется dll и либа в таком же формате. Отлично работает. Какой-то заты получается именно во фритайпе =(
Анатолий оказался прав, проблема в несовпадении формата "класической" lib-библиотеки (freetype.lib) и той библиотеки импорта, что поставляется в качестве девелоперской на страничке GTK++ (libfreetype.dll.a)
Еще не пробовал, но подозреваю, что просто собрав freetype из исходников с соблюдением имени выходного файла (freetype6.dll, именно такую библиотеку хочется fontconfig) и предоставление корректной для студии либы проблема решится.