8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

什么是未定义的引用/未解析的外部符号错误以及如何修复它?

Pux 2月前

320 0

什么是未定义引用/未解析的外部符号错误?常见原因有哪些?如何修复和预防这些错误?

什么是未定义引用/未解析的外部符号错误?常见原因有哪些?如何修复和预防这些错误?

帖子版权声明 1、本帖标题:什么是未定义的引用/未解析的外部符号错误以及如何修复它?
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Pux在本站《macos》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 声明但未定义变量或函数。

    典型的变量声明是

    extern int x;
    

    由于这只是一个声明,因此 一个定义 。相应的定义如下:

    int x;
    

    例如,以下内容会产生错误:

    extern int x;
    int main()
    {
        x = 0;
    }
    //int x; // uncomment this line for successful definition
    

    类似的注释也适用于函数。声明函数而不定义它会导致错误:

    void foo(); // declaration only
    int main()
    {
       foo();
    }
    //void foo() {} //uncomment this line for successful definition
    

    请注意,您实现的函数与您声明的函数完全匹配。例如,您可能有不匹配的 cv 限定符:

    void foo(int& x);
    int main()
    {
       int x;
       foo(x);
    }
    void foo(const int& x) {} //different function, doesn't provide a definition
                              //for void foo(int& x)
                              
    

    其他不匹配的例子包括

    • 函数/变量在一个命名空间中声明,在另一个命名空间中定义。
    • 函数/变量声明为类成员,定义为全局(反之亦然)。
    • 函数返回类型、参数数量和类型以及调用约定并不完全一致。

    编译器的错误消息通常会为您提供已声明但从未定义的变量或函数的完整声明。将其与您提供的定义进行仔细比较。 确保每个细节都匹配。

返回
作者最近主题: