Я использую библиотеку FTGL в своем проекте Microsoft Visual Studio 2012, C ++. Мне наконец-то удалось правильно связать его с моим проектом, так как я могу правильно отобразить шрифт, используя:
FTGLPixmapFont font("C:/Windows/Fonts/Arial.ttf");
font.Render("Hello world");
Кажется, все в порядке, пока я не попытаюсь создать объект, используя new
оператор:
FTGLPixmapFont* font = new FTGLPixmapFont("C:/Windows/Fonts/Arial.ttf"); // This causes error
font->Render("Hello world");
Код выше производит эту ошибку:
AppLayer.obj : error LNK2001: unresolved external symbol "public: virtual float __thiscall FTFont::Advance(unsigned short const *,int,class FTPoint)" (?Advance@FTFont@@UAEMPBGHVFTPoint@@@Z)
1>AppLayer.obj : error LNK2001: unresolved external symbol "public: virtual class FTBBox __thiscall FTFont::BBox(unsigned short const *,int,class FTPoint,class FTPoint)" (?BBox@FTFont@@UAE?AVFTBBox@@PBGHVFTPoint@@1@Z)
1>AppLayer.obj : error LNK2001: unresolved external symbol "public: virtual class FTPoint __thiscall FTFont::Render(unsigned short const *,int,class FTPoint,class FTPoint,int)" (?Render@FTFont@@UAE?AVFTPoint@@PBGHV2@1H@Z)
Я понятия не имею, что может быть причиной для этого. Буду очень признателен за любые ответы.
Спасибо!
Похоже, вы забыли связать библиотеку или включить файл в сборку.
Этот класс наследует класс FTFont. Убедитесь, что вы правильно связали библиотеку, включая это определение.
В Visual вы можете просто связать список, добавив файл .lib в проект, как если бы это был cpp.
Если вы связываете другой проект из визуального решения, проверьте в свойствах вашего проекта, правильно ли установлена зависимость от другого проекта.
Лучший
Эти конкретные ошибки компоновщика происходят, если для свойства «Обрабатывать WChar_T как встроенный тип» (см. C / C ++ / Language на страницах свойств) задано значение «Да» для усложнения библиотеки FTGL и «Нет» для компиляции ваше приложение с использованием библиотеки.
Компилятор подготавливает функции с «WChar_t const *» в качестве типа аргумента в библиотеке FTGL, но ваша программа будет искать «unsigned short * const», и поэтому не найдет никакой функции с этой сигнатурой.
Чтобы исправить это, измените свойство «Обработать WChar_T как встроенный тип» в своем проекте, чтобы оно соответствовало настройке в библиотеке FTGL; очистить и перекомпилировать, и это должно работать.