1

我在我的 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)

我完全不知道这可能是什么原因。我真的很感激任何答案。

谢谢!

4

2 回答 2

1

您似乎忘记链接库或在构建中包含文件。这个类继承了类FTFont。检查您是否正确链接了包含此定义的库。

在视觉上,您可以通过将 .lib 文件添加到项目中来链接列表,就像它是一个 cpp 一样。

如果您从可视化解决方案链接另一个项目,请检查项目的属性是否正确设置了对另一个项目的依赖关系。

最好的

于 2012-11-09T12:27:11.083 回答
0

如果将“将 WChar_T 视为内置类型”属性(在属性页中的 C/C++/语言中找到)设置为“是”以用于 FTGL 库的复杂化,而将“否”用于编译您的应用程序使用该库。

编译器使用“WChar_t const*”作为 FTGL 库中的参数类型来准备函数,但是您的程序将寻找“unsigned short *const”,因此不会找到任何具有该签名的函数。

要解决此问题,请更改项目中的“将 WChar_T 视为内置类型”属性,使其与 FTGL 库中的设置相匹配;清理并重新编译它应该可以工作。

于 2014-02-22T00:59:45.960 回答