Создание объекта с помощью оператора new приводит к неразрешенной ошибке внешнего символа C ++ FTGL

Я использую библиотеку 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)

Я понятия не имею, что может быть причиной для этого. Буду очень признателен за любые ответы.

Спасибо!

1

Решение

Похоже, вы забыли связать библиотеку или включить файл в сборку.
Этот класс наследует класс FTFont. Убедитесь, что вы правильно связали библиотеку, включая это определение.

В Visual вы можете просто связать список, добавив файл .lib в проект, как если бы это был cpp.

Если вы связываете другой проект из визуального решения, проверьте в свойствах вашего проекта, правильно ли установлена ​​зависимость от другого проекта.

Лучший

1

Другие решения

Эти конкретные ошибки компоновщика происходят, если для свойства «Обрабатывать WChar_T как встроенный тип» (см. C / C ++ / Language на страницах свойств) задано значение «Да» для усложнения библиотеки FTGL и «Нет» для компиляции ваше приложение с использованием библиотеки.

Компилятор подготавливает функции с «WChar_t const *» в качестве типа аргумента в библиотеке FTGL, но ваша программа будет искать «unsigned short * const», и поэтому не найдет никакой функции с этой сигнатурой.

Чтобы исправить это, измените свойство «Обработать WChar_T как встроенный тип» в своем проекте, чтобы оно соответствовало настройке в библиотеке FTGL; очистить и перекомпилировать, и это должно работать.

0

По вопросам рекламы [email protected]