请帮忙解决下error LNK2001: unresolved external symbol

angelwait 2008-08-28 11:11:51
编译可以通过。连接时出现error LNK2001: unresolved external symbol错误
Linking...
main.obj : error LNK2001: unresolved external symbol "public: __thiscall SeqList<int>::~SeqList<int>(void)" (??1?$SeqList@H@@QAE@XZ)
main.obj : error LNK2001: unresolved external symbol "public: __thiscall SeqList<int>::SeqList<int>(void)" (??0?$SeqList@H@@QAE@XZ)
Debug/SL.exe : fatal error LNK1120: 2 unresolved externals
Error executing link.exe.

/* main.cpp*/

#include "SeqList.h"
#include <iostream>
using namespace std;

int main()
{
cout<<"start"<<endl;
SeqList<int> s;

return 1;
}

/* SeqList.h*/
#include "LinearList.h"

const int defaultSize=100;

template <class T>
class SeqList:public LinearList<T>{
protected:
T* data;
int maxSize;
int last;
void reSize(int newSize);
public:
SeqList();
SeqList(int sz);
SeqList(const SeqList<T>& L);
~SeqList();
int Size()const;
int Length()const;
int Search(const T& X)const;
T getData(int i)const;
void setData(int i,const T& x);
bool Insert(int i,T& x);
bool Remove(int i,T& x);
bool IsEmpty()const;
bool IsFull()const;
void input();
void output();
SeqList<T> operator=(const LinearList<T>& L);
};

函数的实现:

template <class T>
SeqList<T>::SeqList()
{
cout<<"called!"<<endl;
maxSize=0;
last=-1;
data=new T[defaultSize];
}


template <class T>
SeqList<T>::~SeqList()
{
delete[] data;
}

请帮忙看看问题在哪多谢了。
...全文
287 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
gaoxiaowei 2008-08-28
  • 打赏
  • 举报
回复
lnk2001:unresolved external symbol。。。为不确定的外部符号,如果连接程序不能在所有的库和目标文件内找到所引用的函数、变量或标签,将产生此错误消息。一般来说,发生错误的原因有两个:一是所引用的函数、变量不存在、拼写不正确或者使用错误;其次可能使用了不同版本的连接库。
lnk1120 你可以尝试在[Project] --> [Settings] --> 选择"Link"属性页,
在Project Options中将/subsystem:console改成/subsystem:windows
yyunffu 2008-08-28
  • 打赏
  • 举报
回复
无法解析的符号。
这个好像是你缺少了什么头文件,或者库文件。
gaoxiaowei 2008-08-28
  • 打赏
  • 举报
回复
lnk2001:unresolved external symbol。。。为不确定的外部符号,如果连接程序不能在所有的库和目标文件内找到所引用的函数、变量或标签,将产生此错误消息。一般来说,发生错误的原因有两个:一是所引用的函数、变量不存在、拼写不正确或者使用错误;其次可能使用了不同版本的连接库。
lnk1120 你可以尝试在[Project] --> [Settings] --> 选择"Link"属性页,
在Project Options中将/subsystem:console改成/subsystem:windows
gaoxiaowei 2008-08-28
  • 打赏
  • 举报
回复
lnk2001:unresolved external symbol。。。为不确定的外部符号,如果连接程序不能在所有的库和目标文件内找到所引用的函数、变量或标签,将产生此错误消息。一般来说,发生错误的原因有两个:一是所引用的函数、变量不存在、拼写不正确或者使用错误;其次可能使用了不同版本的连接库。
lnk1120 你可以尝试在[Project] --> [Settings] --> 选择"Link"属性页,
在Project Options中将/subsystem:console改成/subsystem:windows
gaoxiaowei 2008-08-28
  • 打赏
  • 举报
回复
lnk2001:unresolved external symbol。。。为不确定的外部符号,如果连接程序不能在所有的库和目标文件内找到所引用的函数、变量或标签,将产生此错误消息。一般来说,发生错误的原因有两个:一是所引用的函数、变量不存在、拼写不正确或者使用错误;其次可能使用了不同版本的连接库。
lnk1120 你可以尝试在[Project] --> [Settings] --> 选择"Link"属性页,
在Project Options中将/subsystem:console改成/subsystem:windows
angelwait 2008-08-28
  • 打赏
  • 举报
回复
是用的VC6.0
rageliu 2008-08-28
  • 打赏
  • 举报
回复
看错了,不好意思
rageliu 2008-08-28
  • 打赏
  • 举报
回复
#include "stdafx.h"
w_anthony 2008-08-28
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 angelwait 的回复:]
引用 10 楼 w_anthony 的回复:
你这个是模板,模板的实现写到.cpp里面还是一样无法实例化的,除非#include "xx.cpp"。
不过一般写模板,要么是直接写到.h里面,要么是写到.inl,然后在.h最后#include "xx.inc"

好象就是这样..inl和inc是什么啊,没有使用过
[/Quote]

.inc是手误,原来是想写.inl,这个跟扩展名没有关系,只不过是一种比较通用的写法。
你把代码交给别人,别人一看就会知道这个.inl里面的要么是inline函数,要么模板实现。
socrates 2008-08-28
  • 打赏
  • 举报
回复
同意LS,没有找到函数实现
greatws 2008-08-28
  • 打赏
  • 举报
回复
没把SeqList.cpp加入进工程
angelwait 2008-08-28
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 w_anthony 的回复:]
你这个是模板,模板的实现写到.cpp里面还是一样无法实例化的,除非#include "xx.cpp"。
不过一般写模板,要么是直接写到.h里面,要么是写到.inl,然后在.h最后#include "xx.inc"
[/Quote]
好象就是这样..inl和inc是什么啊,没有使用过
w_anthony 2008-08-28
  • 打赏
  • 举报
回复
你这个是模板,模板的实现写到.cpp里面还是一样无法实例化的,除非#include "xx.cpp"。
不过一般写模板,要么是直接写到.h里面,要么是写到.inl,然后在.h最后#include "xx.inc"
angelwait 2008-08-28
  • 打赏
  • 举报
回复
把main文件里的
#include "SeqList.h"
改为#include "SeqList.cpp"
就没问题了

难道编译器不会把"SeqList.h"里的声明和"SeqList.cpp"里的实现连接在一起么?

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧