【问题标题】:Unresolved external in .obj files concerning FreeType library class destructors T::~T.obj 文件中有关 FreeType 库类析构函数 T::~T 的未解析外部
【发布时间】:2011-02-26 01:15:04
【问题描述】:

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

...我现在遇到了另一个困难: 我现在在 .obj 文件中有“未解析的外部”析构函数: 我之前已经看到过这个错误: 这似乎是一个虚拟析构函数的问题,应该什么都没有实现: T::~T() { } ; (或=空;)

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

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

【问题讨论】:

    标签: c++ external destructor freetype .obj


    【解决方案1】:

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

    现在该做什么:

    • 检查您是否遗漏了 FreeType 所需的任何库。在类 Unix 操作系统上,您可以使用 nm 命令检查析构函数代码是否包含在库文件中(请参阅手册页)。

    • 检查 FreeType 文档这是一个已知问题还是存在更新版本

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

      A类{ ... 虚拟〜A(){} }

    变成

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

    并在单独的文件中提供:

    A::~A() {}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-28
      • 1970-01-01
      • 2013-06-15
      • 2014-04-20
      • 2015-08-21
      • 1970-01-01
      相关资源
      最近更新 更多