c++ - "non-virtual thunk to <method name>", 引用自 : Vtable for <classname>in <objectfile. o>

标签 c++ xcode linker

在 Debug模式下编译时,我的 xcode 编译出现以下链接错误:

"<method name>", referenced from: 
Vtable for <classname>in <objectfile.o>

"non-virtual thunk to <method name>", referenced from: 
Vtable for <classname>in <objectfile.o>

奇怪的是:它只出现在我的一个构建目标中(该代码的两个目标几乎相同),而且如果这些方法是在头文件而不是 .cpp 中定义的,那么它对两者都适用目标。

所有这些方法都是纯虚拟的。发生这些错误的类继承自多个类,但只有其中一个会导致这些错误。

有人知道导致此错误的原因吗?

最佳答案

遇到了同样的问题。 当我们定义了一个虚拟成员函数(在 .h 头文件中)但没有实现它(在 .cpp 文件中)时,就会发生这种情况。

在我的例子中,实现是在一个 #define 中,它阻止了实际编译。对于这种常见错误,GCC 应该有更明确的信息,例如

virtual function <function> defined but not implemented in class <class>

关于c++ - "non-virtual thunk to <method name>", 引用自 : Vtable for <classname>in <objectfile. o>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5831063/

相关文章:

c++ - 通过引用传递与通过指针传递时对象的范围

c++ - 如何使用 objdump 在高度优化的目标文件中交错源代码?

iphone - 在 Iphone 中调整图像大小

iphone - iOS本地化。旨在本地化所有语言的字符串,但仅本地化某些语言的图像

c++ - 将 __m128i 值转换为 std::tuple

c++ - 32 位程序无法捕获在 32 位进程上进行的击键,但能够捕获在 64 位进程上进行的击键

iphone - 带有自定义 View 选择器的 UIBarButtonItem init 无法正常工作

c++ - 在 Windows 上将 FFmpeg 与 CMake 链接

c++ - 为VxWorks 5.5.1编译时如何减少目标文件大小?

c++ - 我如何组织 C++ 代码而不用过多考虑某些内容是否已模板化?