因此,通常当您看到未解析的外部符号错误时,链接器至少会告诉您引用在哪个函数中,即
未解析的外部符号“class1::function1”**在函数“class2::function2”中引用**
但是当你只得到前半部分时你会怎么做?即
未解析的外部符号“class1::function1”
我知道“class1::function1”的定义位置,但我故意不包括它。因此,仅包括包含定义的文件将无济于事。 include 以及对文件中包含的符号的所有引用都被 ifdef 输出。我需要的是找到对这个故意未包含的符号的引用的方法,以便我可以摆脱它。搜索符号名称只会显示我已经 ifdef 输出的内容。
最佳答案
如果它是一个虚函数,那么它从 vtable 中引用,vtable 又从每个构造函数(或每个构造函数内联的地方)引用。
如果您正在使用该类的实例,我认为最好的办法是删除 virtual 关键字。否则,您必须提供一个定义,即使只是一个 stub 。
(语言标准通过考虑始终使用的任何虚函数来处理此问题,因此需要定义。)
关于c++ - 没有 "referenced in"字段的未解析外部符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20846971/