关于error LNK2019::Unresolved External Symbol * Referenced In Function..解决办法 2

原创 2016年05月17日 22:13:04

前几天我转了一篇关于error LNK2019::Unresolved External Symbol * Referenced In Function..解决办法的博客,但我自己后来按照上面的办法并没有解决我遇到的问题,当然这里我不是在说原博主给出的解决方案不对,应该是我遇到的问题跟原博主提出的情况都不符合,所以才没解决!这里再次提一下我碰到的问题:
我是写了如下的代码:

 #ifndef CIRCLIST_H_
#define CIRCLIST_H_

template <class T>
struct CircListNode{
    T data;
    CircListNode<T> * link;
};

template <class T>
class CircList{
private:
    CircListNode<T> * first;
public:
    CircList(){}
    CircList(int i);
    ~CircList();
    CircListNode<T> * Locate(int i);
};
#endif
 #include "stdafx.h"
#include "circList.h"
#include <iostream>

using namespace std;

template<class T>
CircList<T>::CircList(int i)
{
    T value;
    first = new CircListNode < T > ;
    for (int j = 0; j < i; j++)
    {
        CircListNode<T> * newNode = new CircListNode < T > ;
        cout << "请输入第" << j + 1 << "个节点的值:";
        getline(cin, value);
        newNode->data = valude;
        newNode->link = first->link;
        first->link = newNode;
    }
    cout << "一个包含" << i << "个节点的循环表建立成功!" << endl;
}

template<class T>
CircList<T>::~CircList()
{
    CircListNode<T> * q;
    while (first->link != NULL)
    {
        q = first->link;
        first->link = q->link;
        delete q;
    }
    delete first;
}

template<class T>
CircListNode<T> * CircList<T>::Locate(int i)
{
    CircListNode<T> * current = new CircListNode < T > ;
    if (current == NULL)
    {
        cout << "内存分配错误!" << endl;
        return NULL;
    }
    else
    {
        current = first->link;
        for (int j = 1; j < i - 1; j++)
            current = current->link;
        return current;
    }
}
#include "stdafx.h"
#include <iostream>
#include "circList.h"

using namespace std;

template<class T>
void Josephus(CircList<T> & js, int n, int s, int m);

int _tmain(int argc, _TCHAR* argv[])
{
    int n, s, m;
    cout << "请输入游戏人数、开始位置和报数间隔: ";
    cin >> n >> s >> m;
    CircList<double> clist(n);
    Josephus(clist, n, s, m);
    return 0;
}

template<class T>
void Josephus(CircList<T> & js, int n, int s, int m)
{
    CircListNode<T> * p = js.Locate(s), *pre = NULL;
    for (int i = 0; i < n - 1; i++)
    {
        for (int j = 1; j < m; j++)
        {
            pre = p;
            p = p->link;
        }
        cout << "出列的人是" << p->data << endl;
        pre->link = p->link;
        p = pre->link;
    }
}

编译运行之后报出如下错误:

Error 1 error LNK2019: unresolved external symbol "public: __thiscall CircList::CircList(int)" (??0?$CircList@N@@QAE@H@Z) referenced in function _wmain
Error 2 error LNK2019: unresolved external symbol "public: __thiscall CircList::~CircList(void)" (??1?$CircList@N@@QAE@XZ) referenced in function _wmain
Error 3 error LNK2019: unresolved external symbol "public: struct CircListNode * __thiscall CircList::Locate(int)" (?Locate@?$CircList@N@@QAEPAU?$CircListNode@N@@H@Z) referenced in function "void __cdecl Josephus(class CircList &,int,int,int)" (??$Josephus@N@@YAXAAV?$CircList@N@@HHH@Z)

Error 4 error LNK1120: 3 unresolved externals

然后我去百度了很久,找到了挺多解决办法,但都没有解决,后来我又去看了《c++ primer plus》这本书,才知道自己其实犯了很致命又很简单的错误,就是我把模板类的声明和定义分别放在不同的文件中,这会导致问题,这是编译器所不允许的,所以我们只要我声明和定义写在一个.h文件里这问题就解决了!


希望这篇博客可以对大家有帮助!


版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/baidu_24736703/article/details/51439853

解决Error LNK2019: unresolved external symbol

The problem with your project is that you are using a “C” style exported library in your C++ project...
  • u010309553
  • u010309553
  • 2016-09-15 13:53:24
  • 569

C++ error LNK2019: "unresolved external symbol"解决方法

1>  LINK : D:\code\OpenGLTest\Debug\OpenGLTest.exe not found or not built by the last incremental li...
  • jd_19900903
  • jd_19900903
  • 2014-05-19 16:41:16
  • 6315

debug : error LNK2019: unresolved external symbol compress referenced in function "public: int __cde

序帮别人解决问题。 他升级了一个vc6的dll工程到vs2012, 编译不过。应该是他移植的有问题。 我先将vc6的dll工程直接用vs2015打开升级,消掉编译警告和错误后,新建了一个d...
  • LostSpeed
  • LostSpeed
  • 2017-07-27 01:19:39
  • 285

error LNK2019:unresolved external symbol的解决方法

我们都知道,当我们在链接程序的时候,出现了如下错误,那是代表,程序没有找到在.h文件中定义的函数的实现。 error LNK2019:unresolved external symbol   有...
  • zxj1988
  • zxj1988
  • 2013-03-06 16:33:41
  • 13384

初学opengl(一)第一个opengl程序及error LNK2019: unresolved external symbol的解决

操作系统:Windows 8.1; 开发环境:Visual Studio 2013 opengl的安装非常简单,很多人写博客介绍,随便找一个跟着做就差不多。 安装完成后,找了一个同学写好的工程拿来...
  • u011636440
  • u011636440
  • 2016-03-01 15:02:09
  • 1535

error LNK2019: unresolved external symbol

error LNK2019: unresolved external symbol(2007-05-28 10:23:43) 转载   分类:Programe(C/C++/VC/....
  • jtop0
  • jtop0
  • 2010-08-01 03:29:00
  • 64084

错误 1 error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartu

当出现这种错误时,你首先要做得是检查代码拼写错误 ,特别是字母拼写顺序错误、{ }不匹配,有很大概率是这种低级错误。接下来才考虑其它问题:   产生这个问题可能的原因 1, 你用vc建了一个控制台程序...
  • neuqbingoye
  • neuqbingoye
  • 2012-02-27 20:07:44
  • 22300

链接错误:error LNK 2019 :Unresolved external symbol

链接错误:error LNK 2019 :Unresolved external symbol 背景: 做X-ray食品检测,怎么都链接不到库。而使用以前编译的可以,而两个版本没有变化...
  • thefieryice
  • thefieryice
  • 2015-07-18 14:16:22
  • 292

Error LNK2019:Unresolved External Symbol 解决方案

参考:http://www.educity.cn/wenda/351518.html Error LNK2019:Unresolved External Symbol *** Referenced ...
  • rudy_axle
  • rudy_axle
  • 2014-12-26 18:07:06
  • 7663

关于error LNK2019::Unresolved External Symbol * Referenced In Function..解决办法

Error LNK2019:Unresolved External Symbol *** Referenced In Function ***的解决方案   当头文件中声明了一个函数,但是在相应的源文...
  • baidu_24736703
  • baidu_24736703
  • 2016-05-16 20:12:41
  • 6846
收藏助手
不良信息举报
您举报文章:关于error LNK2019::Unresolved External Symbol * Referenced In Function..解决办法 2
举报原因:
原因补充:

(最多只允许输入30个字)