关于FreeType库类析构函数T ::〜T的.obj文件中未解析的外部

时间:2011-02-25 14:02:37

标签: c++ external destructor freetype .obj

以一种或多或少好的方式解决了这个问题: How to update a Borland 6 C++ Project from including indy.bpi to indy60.bpi?

......我现在遇到另一个困难: 我现在在.obj文件中有“未解析的外部”指标: 我之前已经看过这个错误: 它似乎是虚拟指标的问题,应该没有任何实现: T :: ~T() {} ; (或= null;)

问题是有关的析构函数位于FreeType库中。因此,我认为它写得很好,并且不愿意修改它的析构函数......

=>有人在编译FreeType库时知道.obj文件中析构函数中未解析的外部问题吗?

1 个答案:

答案 0 :(得分:0)

我还没有使用FreeType,但我想析构函数是直接在类声明中定义的。这意味着它们被隐式声明为内联。根据您的编译器,这将阻止析构函数包含在生成的任何库文件中的外部链接。

现在该怎么做:

  • 检查您是否错过了FreeType的任何必要库。在类Unix操作系统上,如果使用“nm”命令将析构函数代码包含在库文件中,则可以使用nm进行检查(参见手册页)。

  • 检查FreeType文档是否存在已知问题或存在更新版本

  • 更改包含这些类的头文件,使析构函数非内联并将其定义移动到单独的文件中:

    A级{   ...   虚拟~A(){} }

变为

class A {
  ...
  virtual ~A();
}

并在单独的文件中提供:

A::~A() {}