2013-02-13 6 views
1

Не могли бы вы помочь мне разобраться, почему я получаю эти ошибки 2019 года? Я уверен, что все файлы сохранены в правильных местах, и я думаю, что я использую правильные соглашения для файлов заголовков? Это лаборатория для моего класса системного программирования.LNK 2019/1120 Ошибки с моей обработкой заголовка/исходного файла с двойными связанными списками

Вот ошибки:

1> main.obj: ошибка LNK2019: неразрешенный внешний символ "общественности: __thiscall DLL :: intDLL :: intDLL (аннулируются)" (?? 0intDLL @ DLL @ @ QAE @ XZ) ссылка в функции _main

1> main.obj: LNK2019 ошибки: неразрешенный внешний символ "общественности: __thiscall DLL :: intDLL :: ~ intDLL (аннулируются)" (?? 1intDLL @ DLL @@ QAE @ XZ), на которые ссылается функция _main

1> main.obj: ошибка LNK2019: неразрешенный внешний символ "pub ЛИК: пустота __thiscall DLL :: intDLL :: addFront (INT) "(addFront @ intDLL @ DLL @@ QAEXH @ Z?) ссылка в функции _main

1> main.obj: LNK2019 ошибки: неразрешенный внешний символ" общественности: Int __thiscall DLL :: intDLL :: getFront (аннулируются)»(getFront @ intDLL @ DLL @@ QAEHXZ?) ссылка в функции _main

1> C: \ Users \ Josh \ документы \ Visual Studio 2012 \ Проекты \ Lab10 \ Debug \ Lab10.exe: фатальная ошибка LNK1120: 4 неразрешенные внешние

intDLL.h файл:

#include <iostream> 
using std::cout; 
using std::endl; 

class intDLL { 

public: 
    intDLL(); 
    intDLL(const intDLL &original); 
    ~intDLL(); 
    void addFront(int inValue); 
    void addBack(int inValue); 
    void setBack(); 
    int getFront(); 
    int getBack(); 

    struct node { 
     int value; 
     node *next; 
     node *prev; 
    }; 

private: 
    node *front; 
    node *back; 

}; 

intDLL.cpp

#include <iostream> 
#include "intDLL.h" 
using std::cout; 
using std::endl; 


intDLL::intDLL() { 
    front = 0; 
    back = 0; 
} 

void intDLL::setBack() { 
    node *tempNode = new node; 
    if(front == 0) { 
     return; 
    } 

    tempNode = front; 
    while(tempNode->back != 0) { 
     tempNode = tempNode->prev; 
    } 

    back = tempNode; 
} 

void intDLL::addFront(int inValue) { 
    if(front == 0) { 
     node *newFront = new node; 
     newFront->value = inValue; 
     newFront->next = 0; 
     newFront->prev = 0; 
    } 
    else { 
     node *newFront = new node; 
     newFront->value = inValue; 
     newFront->prev = front; 
     front->next = newFront; 
     newFront->next = 0; 
     front = newFront; 
    } 

    setBack(); 
} 

void intDLL::addBack(int inValue) { 
    setBack(); 
    node *newBack = new node; 
    newBack -> value = inValue; 
    back->prev = newBack; 
    newBack->next = back; 
    back = newBack; 
} 

int intDLL::getFront() { 
    return front->value; 
} 

int intDLL::getBack() { 
    return back->value; 
} 

главный:

#include <iostream> 
#include "intDLL.h" 
using std::cout; 
using std::endl; 

int main(int argc, char* argv[]) { 
    intDLL test = intDLL(); 
    test.addFront(3); 
    test.addFront(4); 
    test.addFront(5); 
    std::cout << test.getFront() << endl; 

    return 0; 
} 
+0

Пожалуйста, покажите полные сообщения об ошибках. Единственный намек, который я получаю от 'LNK2019', должен быть связан с компоновщиком. –

+0

Добавлены сообщения об ошибках. Почему downvote на моем самом первом посте? :( – josh

+0

Потому что просто вывод сырого кода и высказывание «у меня есть сообщение об ошибке» не очень хорошо. Удалено нисходящее изображение. Но все же вы должны добавить детали, например, как вы его скомпилируете. – CharlesB

ответ

0

Не уверен, что это сообщение реальной ошибки, но кажется, что вы еще не реализовали несколько функций, для образца

intDLL(const intDLL &original); 
~intDLL(); 

Проверьте свои определения функций, чтобы убедиться, что каждый f определены объявленные объявления. Также убедитесь, что все файлы cpp скомпилированы и связаны.

Другая ошибка не intDLL::node уже не вернулся член

void intDLL::setBack() { 
    intDLL::node *tempNode = new node; 
    ^^^^ node is defined in intDLL, you need provide scope 
    if(front == 0) { 
     return; 
    } 

    tempNode = front; 
    while(tempNode->back != 0) { 
        ^^^ intDLL::node has no back member 
    tempNode = tempNode->prev; 
    } 

    back = tempNode; 
} 

Смотрите эту SO ссылку.

+0

Я прокомментировал те неиспользуемые функции, которые были объявлены в файле заголовка (Не получили их еще из-за этих ошибок) и получили те же последние 3 сообщения об ошибках. Я предположил, что когда я начинаю без отладки в Visual Studio 2012, он скомпилировал все файлы в проекте и сделал соответствующую привязку. Не так ли? – josh