zoukankan      html  css  js  c++  java
  • error: LNK 2019 无法解析的外部符号

    1.如果你是使用的第三方库,你看一下mainplay这个函数是在那个头文件(比如xx.h)里声明的,然后找到其对应的实现库,将其拷贝到你的Debug目录下,再在你的源文件里添加
    #pragma comment(lib,"xx.lib")
    2.如果你是自己实现的mainplay,那么请确保你声明了该函数后还在源文件里实现了它,而且这个源文件被添加到了你的工程里(这是为了编译该文件,然后将这个函数生成到obj里)

    可能你不太明白。这里简单说一下原理。
    如果是第三方库,通常作者会提供头文件给你,你include了这个头文件,就可以使用其中声明的函数,如果没有问题,那编译可以通过。但是到链接的时候,编译器需要将函数的实现代码链接到最终的可执行代码里,而函数的实现代码通常就在lib或dll中,#pragma comment(lib,"xx.lib")就是告诉编译器去xx.lib里找函数的实现代码。
    而如果是你自己来实现这个函数,只有声明是不够的,还需要你在源代码(.cpp)里去实现它,编译器编译这个cpp的时候会将你的实现代码输出到.obj里,连接器直接去obj里找。

    总的来说,【无法解析的外部符号】这样的错误是因为你只声明了函数原型(编译可通过),但却没有提供函数的实现代码(这会导致链接失败LNK2019)。
  • 相关阅读:
    Spring Boot的每个模块包详解
    spring框架所有包说明
    TCP三次握手和四次挥手
    线程池实现原理
    AVL树与红黑树
    去哪儿网面经
    什么是缓存一致性问题?如何解决?
    Redis的应用场景和优缺点
    线程池
    手写快排
  • 原文地址:https://www.cnblogs.com/xaf-dfg/p/3832401.html
Copyright © 2011-2022 走看看