C++出现Link2019的情况和解决方案

1.出现Link2019

  • 错误信息:LNK2019    无法解析的外部符号 "void __cdecl Log(char const *)" (?Log@@YAXPEBD@Z),该符号在函数 main 中被引用
  • 遇到原因,因为在链接的过程中,找不到声明函数的方法体
  • 代码情况:
    文件A:
    #include <iostream>
    
    // 这里定义了一个Logr()函数,但是不存在Log()
    void Logr(const char* message) {
        std::cout << message << std::endl;
    }
    文件B:
     
    #include <iostream>
     
    // 声明Log函数,但是没有方法体,链接会在编译后的obj文件里面,进行寻找
    // 如果没有找到,就会出现Link2019
    void Log(const char* message); 
    int main() {
        Log("Hello world!");
        std::cin.get();
    }
    
    
  • 解决方案:
    1. 在文件B里面,停止调用Log()函。链接不会去寻找没有进行调用的函数
    2.给Log()函数一个方法体,把Logr()函数  修改为   Log()
  • 补充:返回值函数  函数名(参数,参数,......)定义必须一样,要不然链接无法找到
    void Log(const char* message); 
    void Log(const char* message,int num); 
    
    // 两个函数不一样,因为参数不同

猜你喜欢

转载自blog.csdn.net/dantui_/article/details/130114440
今日推荐