   Not sure how to read LNK error.
  I am currently building a 2D Game Engine and am using OpenGL with glpng.--------------------------My original error was a fatal 1104 error but following some sources on the net, I was able to resolve that but then it became a list of 30-33 errors (currently 33.. somehow adding a few lines added errors) and these errros consist mainly of 2019 and a few 2001 errors. I went to the locations of a few of them and they don't feel like there's anything wrong.(one of the original errors probably the original 1104 was about LIBCD.lib)========================| Build Output |=========================1&gt;------ Build started: Project: My_Game_Engine, Configuration: Debug Win32 ------1&gt;Linking...1&gt;Searching libraries1&gt;    Searching C:\Program Files\Microsoft Visual Studio 8\VC\lib\kernel32.lib:1&gt;    Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\user32.lib:1&gt;    Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\gdi32.lib:1&gt;    Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\winspool.lib:1&gt;    Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\comdlg32.lib:1&gt;    Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\advapi32.lib:1&gt;    Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\shell32.lib:1&gt;    Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\ole32.lib:1&gt;    Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\oleaut32.lib:1&gt;    Searching C:\Program Files\Microsoft Visual Studio 8\VC\lib\uuid.lib:1&gt;    Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\odbc32.lib:1&gt;    Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\odbccp32.lib:1&gt;    Searching C:\Program Files\Microsoft Visual Studio 8\VC\lib\libcpmtd.lib:1&gt;    Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\winmm.lib:1&gt;    Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\opengl32.lib:1&gt;    Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\glu32.lib:1&gt;    Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\glut32.lib:1&gt;    Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\glpngd.lib:1&gt;    Searching C:\Program Files\Microsoft Visual Studio 8\VC\lib\LIBCMTD.lib:1&gt;    Searching C:\Program Files\Microsoft Visual Studio 8\VC\lib\OLDNAMES.lib:1&gt;    Searching C:\Program Files\Microsoft Visual Studio 8\VC\lib\kernel32.lib:1&gt;    Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\user32.lib:1&gt;    Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\gdi32.lib:1&gt;    Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\winspool.lib:1&gt;    Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\comdlg32.lib:1&gt;    Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\advapi32.lib:1&gt;    Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\shell32.lib:1&gt;    Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\ole32.lib:1&gt;    Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\oleaut32.lib:1&gt;    Searching C:\Program Files\Microsoft Visual Studio 8\VC\lib\uuid.lib:1&gt;    Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\odbc32.lib:1&gt;    Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\odbccp32.lib:1&gt;    Searching C:\Program Files\Microsoft Visual Studio 8\VC\lib\libcpmtd.lib:1&gt;    Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\winmm.lib:1&gt;    Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\opengl32.lib:1&gt;    Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\glu32.lib:1&gt;    Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\glut32.lib:1&gt;    Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\glpngd.lib:1&gt;    Searching C:\Program Files\Microsoft Visual Studio 8\VC\lib\LIBCMTD.lib:1&gt;    Searching C:\Program Files\Microsoft Visual Studio 8\VC\lib\OLDNAMES.lib:1&gt;Finished searching libraries1&gt;area.obj : error LNK2019: unresolved external symbol "public: void __thiscall linkedList&lt;class background&gt;::insNext(class background *)" (?insNext@?$linkedList@Vbackground@@@@QAEXPAVbackground@@@Z) referenced in function "public: void __thiscall area::addBackground(char *)" (?addBackground@area@@QAEXPAD@Z)1&gt;tester.obj : error LNK2001: unresolved external symbol "public: __thiscall node::~node(void)" (??1node@@QAE@XZ)1&gt;background.obj : error LNK2001: unresolved external symbol "public: __thiscall node::~node(void)" (??1node@@QAE@XZ)1&gt;area.obj : error LNK2019: unresolved external symbol "public: __thiscall node::~node(void)" (??1node@@QAE@XZ) referenced in function "public: __thiscall visualNode::~visualNode(void)" (??1visualNode@@QAE@XZ)1&gt;leading_node.obj : error LNK2001: unresolved external symbol "public: __thiscall node::~node(void)" (??1node@@QAE@XZ)1&gt;Rendering.obj : error LNK2001: unresolved external symbol "public: __thiscall node::~node(void)" (??1node@@QAE@XZ)1&gt;runMain.obj : error LNK2001: unresolved external symbol "public: __thiscall node::~node(void)" (??1node@@QAE@XZ)1&gt;imgLoader.obj : error LNK2001: unresolved external symbol "private: static unsigned int imgLoader::id" (?id@imgLoader@@0IA)1&gt;imgLoader.obj : error LNK2019: unresolved external symbol "public: void __thiscall linkedList&lt;float *&gt;::tieLoop(void)" (?tieLoop@?$linkedList@PAM@@QAEXXZ) referenced in function "public: void __thiscall imgLoader::setupFrames(void)" (?setupFrames@imgLoader@@QAEXXZ)1&gt;imgLoader.obj : error LNK2019: unresolved external symbol "public: void __thiscall linkedList&lt;float *&gt;::insNext(float * *)" (?insNext@?$linkedList@PAM@@QAEXPAPAM@Z) referenced in function "public: void __thiscall imgLoader::setupFrames(void)" (?setupFrames@imgLoader@@QAEXXZ)1&gt;imgLoader.obj : error LNK2019: unresolved external symbol "public: __thiscall linkedList&lt;float *&gt;::linkedList&lt;float *&gt;(void)" (??0?$linkedList@PAM@@QAE@XZ) referenced in function "public: void __thiscall imgLoader::setupFrames(void)" (?setupFrames@imgLoader@@QAEXXZ)1&gt;imgLoader.obj : error LNK2019: unresolved external symbol "public: __thiscall linkedList&lt;float *&gt;::~linkedList&lt;float *&gt;(void)" (??1?$linkedList@PAM@@QAE@XZ) referenced in function "public: void __thiscall imgLoader::setupFrames(void)" (?setupFrames@imgLoader@@QAEXXZ)1&gt;leading_node.obj : error LNK2019: unresolved external symbol "public: void __thiscall linkedList&lt;class visualNode&gt;::insNext(class visualNode *)" (?insNext@?$linkedList@VvisualNode@@@@QAEXPAVvisualNode@@@Z) referenced in function "public: void __thiscall leading_node::linkup(class visualNode *)" (?linkup@leading_node@@QAEXPAVvisualNode@@@Z)1&gt;leading_node.obj : error LNK2019: unresolved external symbol "public: __thiscall linkedList&lt;class visualNode&gt;::linkedList&lt;class visualNode&gt;(void)" (??0?$linkedList@VvisualNode@@@@QAE@XZ) referenced in function "public: __thiscall rendering::rendering(void)" (??0rendering@@QAE@XZ)1&gt;runMain.obj : error LNK2001: unresolved external symbol "public: __thiscall linkedList&lt;class visualNode&gt;::linkedList&lt;class visualNode&gt;(void)" (??0?$linkedList@VvisualNode@@@@QAE@XZ)1&gt;leading_node.obj : error LNK2019: unresolved external symbol "public: __thiscall linkedList&lt;class visualNode&gt;::~linkedList&lt;class visualNode&gt;(void)" (??1?$linkedList@VvisualNode@@@@QAE@XZ) referenced in function "public: __thiscall rendering::~rendering(void)" (??1rendering@@QAE@XZ)1&gt;runMain.obj : error LNK2001: unresolved external symbol "public: __thiscall linkedList&lt;class visualNode&gt;::~linkedList&lt;class visualNode&gt;(void)" (??1?$linkedList@VvisualNode@@@@QAE@XZ)1&gt;AreaGraphics.obj : error LNK2001: unresolved external symbol "public: __thiscall node::node(void)" (??0node@@QAE@XZ)1&gt;leading_node.obj : error LNK2019: unresolved external symbol "public: __thiscall node::node(void)" (??0node@@QAE@XZ) referenced in function "public: __thiscall visualNode::visualNode(void)" (??0visualNode@@QAE@XZ)1&gt;runMain.obj : error LNK2001: unresolved external symbol "public: __thiscall node::node(void)" (??0node@@QAE@XZ)1&gt;tester.obj : error LNK2001: unresolved external symbol "public: __thiscall node::node(void)" (??0node@@QAE@XZ)1&gt;background.obj : error LNK2001: unresolved external symbol "public: __thiscall node::node(void)" (??0node@@QAE@XZ)1&gt;Level.obj : error LNK2019: unresolved external symbol "public: void __thiscall linkedList&lt;class area&gt;::insNext(class area *)" (?insNext@?$linkedList@Varea@@@@QAEXPAVarea@@@Z) referenced in function "public: void __thiscall _level::addArea(void)" (?addArea@_level@@QAEXXZ)1&gt;Level.obj : error LNK2019: unresolved external symbol "public: void __thiscall linkedList&lt;class area&gt;::moveFwd(void)" (?moveFwd@?$linkedList@Varea@@@@QAEXXZ) referenced in function "public: void __thiscall _level::addBackground(char *,int)" (?addBackground@_level@@QAEXPADH@Z)1&gt;Level.obj : error LNK2019: unresolved external symbol "public: struct linkedItem&lt;class area&gt; * __thiscall linkedList&lt;class area&gt;::retNext(void)" (?retNext@?$linkedList@Varea@@@@QAEPAU?$linkedItem@Varea@@@@XZ) referenced in function "public: void __thiscall _level::addBackground(char *,int)" (?addBackground@_level@@QAEXPADH@Z)1&gt;Level.obj : error LNK2019: unresolved external symbol "public: struct linkedItem&lt;class area&gt; * __thiscall linkedList&lt;class area&gt;::retFirst(void)" (?retFirst@?$linkedList@Varea@@@@QAEPAU?$linkedItem@Varea@@@@XZ) referenced in function "public: void __thiscall _level::addBackground(char *,int)" (?addBackground@_level@@QAEXPADH@Z)1&gt;Rendering.obj : error LNK2019: unresolved external symbol "public: void __thiscall linkedList&lt;class visualNode&gt;::moveFwd(void)" (?moveFwd@?$linkedList@VvisualNode@@@@QAEXXZ) referenced in function "public: void __thiscall rendering::cycleNode(void)" (?cycleNode@rendering@@QAEXXZ)1&gt;Rendering.obj : error LNK2019: unresolved external symbol "public: struct linkedItem&lt;class visualNode&gt; * __thiscall linkedList&lt;class visualNode&gt;::retNext(void)" (?retNext@?$linkedList@VvisualNode@@@@QAEPAU?$linkedItem@VvisualNode@@@@XZ) referenced in function "public: void __thiscall rendering::cycleNode(void)" (?cycleNode@rendering@@QAEXXZ)1&gt;Rendering.obj : error LNK2019: unresolved external symbol "public: bool __thiscall linkedList&lt;class visualNode&gt;::currentEmpty(void)" (?currentEmpty@?$linkedList@VvisualNode@@@@QAE_NXZ) referenced in function "public: void __thiscall rendering::cycleNode(void)" (?cycleNode@rendering@@QAEXXZ)1&gt;tester.obj : error LNK2019: unresolved external symbol "public: __thiscall leading_node::leading_node(void)" (??0leading_node@@QAE@XZ) referenced in function "public: __thiscall tester::tester(void)" (??0tester@@QAE@XZ)1&gt;tester.obj : error LNK2019: unresolved external symbol "public: __thiscall linkedList&lt;class area&gt;::linkedList&lt;class area&gt;(void)" (??0?$linkedList@Varea@@@@QAE@XZ) referenced in function "public: __thiscall _level::_level(void)" (??0_level@@QAE@XZ)1&gt;tester.obj : error LNK2019: unresolved external symbol "public: __thiscall linkedList&lt;class area&gt;::~linkedList&lt;class area&gt;(void)" (??1?$linkedList@Varea@@@@QAE@XZ) referenced in function "public: __thiscall _level::~_level(void)" (??1_level@@QAE@XZ)1&gt;C:\Documents and Settings\100265953\Desktop\My Game Engine\My_Game_Engine\Debug\My_Game_Engine.exe : fatal error LNK1120: 21 unresolved externals1&gt;Build log was saved at "file://c:\Documents and Settings\100265953\Desktop\My Game Engine\My_Game_Engine\My_Game_Engine\Debug\BuildLog.htm"1&gt;My_Game_Engine - 33 error(s), 0 warning(s)========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==============================================================One of the instances that I have checked was area.h and area.cpp=============================void area::addBackground(char *filename){background *temp;background tempa;tempa.load(filename);temp = &tempabkgd.insNext(temp);}//bkgd is a private linked list within area.h==================================================I realize it is a fault of mine that I did not test the classes individually step by step and waited to this point to start a build for error proofing...I am not sure if these errors are actually related to each other in some way.   
  Did you define your template functions in the header files or did you try to put them in source files?   ;  all of my files have the function definitions within classes at this point. I know that my Rendering class was originally not a class but function and variable definitions within the .h and actual implementations in the cpp in he style of a typical class or was it library?...) just without putting a class definition around the list. however it is a class right now as well. my only template should be linkedList as shown below.=================================area.cpp#include "area.h"int area::getAreaID(){return area_id;}void area::addBackground(char *filename){background *temp;background tempa;tempa.load(filename);temp = &tempa;bkgd.insNext(temp);}void area::setID(int num){area_id = num;}=================area.h#ifndef AREA_H#define AREA_H#include "background.h"#include "object.h"#include "character.h"#include "node.h"#include "linkedList.h"class area: public node{public:void addBackground(char *filename);//addObject();//addCharacter();int getAreaID();void setID(int num);private:int area_id;linkedList<background> bkgd;//linkedList<object> obj;//linkedList<character> ch;};#endif===================================================My templated Linked Listcpp#include "linkedList.h"template<typename T> linkedList<T>::linkedList(){}template<typename T> linkedList<T>::linkedList(T *first_item){current->data = first_item;}template<typename T> void linkedList<T>::moveBac(){if(retPrev())current = current->prev;}template<typename T> void linkedList<T>::moveFwd(){if(retNext())current=current->next;}template<typename T> void linkedList<T>::moveBac(linkedItem<T> *c){if(c->prev)c = c->prev;}template<typename T> void linkedList<T>::moveFwd(linkedItem<T> *c){if(c->next)c=c->next;}template<typename T> void linkedList<T>::insHead(T *item){/*linkedList<T> *temp(item);//temp = current;while(current->retPrev()){current=current->prev;}current->prev=temp;temp->next=current;*/current = retFirst();insPrev(item);}template<typename T> void linkedList<T>::insTail(T *item){/*linkedList<T> *temp(item);//temp = current;while(current->retNext()){current=current->next;}current->next=temp;temp->prev=current;*/current=retLast();insNext(item);}template<typename T> void linkedList<T>::insNext(T *item){linkedItem<T> *temp;//(item);temp = new linkedItem<T>;temp->data=item;if(currentEmpty()){current=temp;}else if(retNext()){temp->prev=current;temp->next=current->next;current->next->prev=temp;current->next=temp;}else if(!retNext()){current->next=temp;temp->prev=current;}}template<typename T> void linkedList<T>::tieLoop(){current = retFirst();head = current;current->prev = retLast();current->prev->next = current;}template<typename T> void linkedList<T>::insPrev(T *item){linkedItem<T> *temp;//(item);temp = new linkedItem<T>; temp->data=item;if(currentEmpty()){current=temp;}else if(retPrev()){temp->next=current;temp->prev=current->prev;current->prev->next=temp;current->prev=temp;}else if(!retPrev()){current->prev=temp;temp->next=current;}}template<typename T> linkedItem<T> *linkedList<T>::retPrev(){return current->prev;}template<typename T> linkedItem<T> *linkedList<T>::retNext(){return current->next;}template<typename T> linkedItem<T> *linkedList<T>::retFirst(){if(!head){linkedItem<T> *temp;temp = current;while(temp->prev){temp=temp->prev;}return temp;}//else//{return head;//}}template<typename T> void linkedList<T>::insNext(linkedList<T> *list){if(currentEmpty()){current = list->retFirst();}else if(!retNext()){current->next = list->retFirst();}else{current->next->prev = list->retLast();current->next = list->retFirst();}}template<typename T> void linkedList<T>::insPrev(linkedList<T> *list){if(currentEmpty()){current = list->retFirst();}else if(!retPrev()){current->prev = list->retLast();}else{current->prev->next = list->retFirst();current->prev = list->retLast();}}template<typename T> void linkedList<T>::insTail(linkedList<T> *list){while(retNext()){moveFwd();}insNext(list);}template<typename T> void linkedList<T>::insHead(linkedList<T> *list){while(retPrev()){moveBac();}insPrev(list);}template<typename T> void linkedList<T>::insAt(linkedList<T> *list, T *first, T *second){//linkedList<T> *temp(item);//linkedItem<T> *a;current=retFirst();while( !(current->data==first && current->next->data==second) && current->next!=0){current=current->next;}insNext(list);}template<typename T> bool linkedList<T>::currentEmpty(){if(current->data==NULL)return 1;elsereturn 0;}template<typename T> void linkedList<T>::insAt(linkedList<T> *list, T *first, linkedItem<T> *second){//linkedList<T> *a;current=retFirst();while( !(current->data==first && current->next==second) && current->next!=0){current=current->next;}insNext(list);}template<typename T> void linkedList<T>::insAt(linkedList<T> *list, linkedItem<T> *first, T *second){//linkedList<T> *a;current=retFirst();while( !(current==first && current->next->data==second) && current->next!=0){current=current->next;}insNext(list);}template<typename T> void linkedList<T>::insAt(linkedList<T> *list, linkedItem<T> *first, linkedItem<T> *second){//linkedList<T> *a;current=retFirst();while( !(current==first && current->next==second) && current->next!=0){current=current->next;}insNext(list);}template<typename T> linkedItem<T> *linkedList<T>::retLast(){linkedList<T> *temp;temp = current;while(temp->next){temp=temp->next;}return temp;}template<typename T> void linkedList<T>::delNext(){if(current->next){current->next->prev=current;current->next=current->next->next;}else{current->next=0;}}template<typename T> void linkedList<T>::delPrev(){if(current->prev){current->prev->next=current;current->prev=current->next->prev;}else{current->prev=0;}}template<typename T> void linkedList<T>::insAt(T *item, T *first, T *second){//linkedList<T> *temp(item);//linkedItem<T> *a;current=retFirst();while( !(current->data==first && current->next->data==second) && current->next!=0){current=current->next;}insNext(item);}template<typename T> void linkedList<T>::insAt(T *item, T *first, linkedItem<T> *second){//linkedList<T> *a;current=retFirst();while( !(current->data==first && current->next==second) && current->next!=0){current=current->next;}insNext(item);}template<typename T> void linkedList<T>::insAt(T *item, linkedItem<T> *first, T *second){//linkedList<T> *a;current=retFirst();while( !(current==first && current->next->data==second) && current->next!=0){current=current->next;}insNext(item);}template<typename T> void linkedList<T>::insAt(T *item, linkedItem<T> *first, linkedItem<T> *second){//linkedList<T> *a;current=retFirst();while( !(current==first && current->next==second) && current->next!=0){current=current->next;}insNext(item);}template<typename T> linkedList<T>::~linkedList(){//linkedList<T> *temp;current=retLast();while(current->prev){current=current->prev;delNext();}current=0;}----------------------------------------------header#ifndef LINKEDLIST_H#define LINKEDLIST_Htemplate<typename T> struct linkedItem{//linkedItem<T> *current;linkedItem<T> *next;linkedItem<T> *prev;T data;};template <typename T> class linkedList{public://void goForward();//void goBack();linkedList();linkedList(T *first_item);~linkedList();linkedItem<T> *retNext();linkedItem<T> *retPrev();linkedItem<T> *retFirst();linkedItem<T> *retLast();bool currentEmpty();void insNext(T *item);void insPrev(T *item);void insTail(T *item);void insHead(T *item);void insAt(T *item, T *first, T *second);void insAt(T *item, T *first, linkedItem<T> *second);void insAt(T *item, linkedItem<T> *first, T *second);void insAt(T *item, linkedItem<T> *first, linkedItem<T> *second);void insNext(linkedList<T> *list);void insPrev(linkedList<T> *list);void insTail(linkedList<T> *list);void insHead(linkedList<T> *list);void insAt(linkedList<T> *list, T *first, T *second);void insAt(linkedList<T> *list, T *first, linkedItem<T> *second);void insAt(linkedList<T> *list, linkedItem<T> *first, T *second);void insAt(linkedList<T> *list, linkedItem<T> *first, linkedItem<T> *second);void moveFwd();void moveBac();void moveFwd(linkedItem<T> *c);void moveBac(linkedItem<T> *c);void tieLoop();void delNext();void delPrev();//protected://private:////linkedList<T> *prev;linkedItem<T> *head;linkedItem<T> *current;bool loop;//T *data;//T *first;};//template<typename T> linkedList<T>#endif;  Unless your compiler supports the export keyword, and seeing as that looks like a MSVC error code, I'm willing to bet that yours doesn't, then you can't put the definition of a template in a separate source file without explicit instantiation for specific types. Without explicit instantiation, the complete definition of the template needs to be available at point of instantiation, which means, in effect, that the definition needs to go into the header. (Or an inline file of some sort, etc.)   ;  Well looking at an error you posted code for:_level::addBackground(char *,int)"You are apparently calling a function with a name and some int while the code you posted has only a char*. Unless that function exists somewhere else in your code that would be an error.Also check if 'const' etc match   ;0) Why are you writing your own linked list?1) To read link errors, first skip past all the library searching. Then look at each error in turn. We'll look at the first one.1>area.obj : error LNK2019: unresolved external symbol"public: void __thiscall linkedList<class background>::insNext(class background *)"(?insNext@?$linkedList@Vbackground@@@@QAEXPAVbackground@@@Z)referenced in function "public: void __thiscall area::addBackground(char *)" (?addBackground@area@@QAEXPAD@Z)I've added some line breaks.2) Strip away the error codes, mangled symbols, calling conventions and the 'class' keyword.area.obj : unresolved external symbol"void linkedList<background>::insNext(background *)"referenced in function "void area::addBackground(char *)" 3) There are really only two kinds of linker errors, and both of them talk about "external symbols". A "duplicate" one means that you've put code into a header file when you shouldn't, or something along those lines. An "unresolved" one means that the implementation code is completely missing, either because you completely forgot to write it (that happens :) ) or because the .cpp file is not part of the project.4) The error will tell you what the "symbol" is (typically a function signature, although it could be a variable name) that was "duplicate" or "unresolved", and also where it was "referenced" (called or pointer-taken-to, for a function; read or written for a variable). In your case, we can translate:The function "void area::addBackground(char *)" attempts to call"void linkedList<background>::insNext(background *)", but no implementationof that function could be found.Going through the rest of them, it looks like your entire linkedList implementation can't be found. This would, for normal code, suggest strongly that the implementation file is simply missing from the project (since it would be hard to forget to implement *everything*).However, as SiCrane correctly points out, it's important to note that with templates, implementation can't generally be put in a .cpp file.The difference between LNK2001 and LNK2019 is whether or not the unresolved external symbol is "referenced" at the point that the error occurs. Destructors don't need to be referenced to cause an error (because they're called automatically), and neither do static members of classes (because the declaration is already a "reference").A note about those static members, BTW:struct Foo {  static int bar; // <-- this DOES NOT define Foo::bar.  // It only DECLARES that member. It must be defined elsewhere:};int Foo::bar; // Here is a definition. It needs to be in a .cpp file,// NOT the header, because otherwise it will be multiply defined. Don't worry// about 'extern'; it's implicit because this is a class member.;  i typed export and it showed up blue so i expect it to be supported. i am using Microsoft Visual C++ 2005. from MSVS 2005 PE.   ;  No version of MSVC supports export. You'll need to put template function definitions into the header files.   ;Quote:Original post by NGEVAi typed export and it showed up blue so i expect it to be supported. i am using Microsoft Visual C++ 2005. from MSVS 2005 PE.That is just syntax highlighting. MSVC does not support export.   ;Quote:Original post by Zahlmanthanks for the explanation of unresolved external symbol. i've generally disregarded that because of lack of knowledge. and thanks also for the additional tip on static.i'm creating a linked list partially for practice.=======================Update:it runs now after fixing a few things as mentioned. the template functions are now in the header and i removed the cpp from the project.   