我在Microsoft Visual Studio 2012,C ++项目中使用FTGL库。我终于设法将它正确地链接到我的项目,因为我可以使用:
正确地渲染字体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)
我完全不知道这是什么原因。我真的很感激任何答案。
谢谢!
答案 0 :(得分:1)
看起来您忘记链接库,或者在构建中包含文件。 该类继承FTFont类。检查您是否正确链接了库,包括此定义。
在visual中,您可以通过将.lib文件添加到项目中来链接列表,就像它是cpp一样。
如果您从可视化解决方案链接另一个项目,请检查项目的属性是否正确设置了对其他项目的依赖。
最好的
答案 1 :(得分:0)
如果“将WChar_T作为内置类型”属性(在属性页中的C / C ++ / Language中找到)对于FTGL库的复杂性设置为“是”而对于FTGL库的复杂性设置为“否”,则会发生这些特定的链接器错误使用库编译您的应用程序。
编译器使用“WChar_t const *”作为FTGL库中的参数类型来准备函数,但是你的程序将寻找“unsigned short * const”,因此找不到具有该签名的任何函数。
要修复,请在项目中更改属性“将WChar_T视为内置类型”,以使其与FTGL库中的设置相匹配;清理和重新编译它应该工作。