Форум программистов, компьютерный форум CyberForum.ru

error LNK1120: 2 неразрешенных внешних элементов - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 132, средняя оценка - 4.82
stawerfar
 Аватар для stawerfar
140 / 54 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
24.03.2012, 19:24     error LNK1120: 2 неразрешенных внешних элементов #1
Всем привет!
В чем может быть проблема и как её устранить!
пишет вот так
C++
1
2
3
Ошибка  3   error LNK1120: 2 неразрешенных внешних элементов    D:\Project_VS_2010\C++\garbage\encryption\Debug\encryption.exe  encryption
Ошибка  2   error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall text::text(void)" (??0text@@QAE@XZ) в функции _main   D:\Project_VS_2010\C++\garbage\encryption\encryption\_main.obj  encryption
Ошибка  1   error LNK2019: ссылка на неразрешенный внешний символ "public: virtual __thiscall text::~text(void)" (??1text@@UAE@XZ) в функции _main  D:\Project_VS_2010\C++\garbage\encryption\encryption\_main.obj  encryption
Я пишу много файловую прогу в main объявил заголовочник класса #include"text.h"
в этом файле все необходимые библиотеки плюс описания класса "text". Есть ещё файл описания методов класса "text" записанный в text.cpp, в нем тоже #include"text.h"!
В чём может быть проблема подскажите, если нужно могу выложить код!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,154
Завершенные тесты: 1
24.03.2012, 19:47     error LNK1120: 2 неразрешенных внешних элементов #2
В text.h объявлен конструктор
text();
и деструктор
~text();
однако их реализация в text.cpp отсутствует.
stawerfar
 Аватар для stawerfar
140 / 54 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
24.03.2012, 19:49  [ТС]     error LNK1120: 2 неразрешенных внешних элементов #3
Цитата Сообщение от zss Посмотреть сообщение
однако их реализация в text.cpp отсутствует
text.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
#include "text.h"
 
//------------------------------------------------------------------------------------------------------------------
//инициализация статических полей
std::fstream text::sfile;
std::string text::staticline;
std::string text::statickey;
std::string text::staticresultline;
//------------------------------------------------------------------------------------------------------------------
//конструктрор без параметров
text::text(void)
{}
 
//------------------------------------------------------------------------------------------------------------------
//конструктор с 2-мя параметрами
text::text(const char*const cchcaddress,const char*const cchckey)
{
    text::updata(cchcaddress,cchckey);//вызов метода для инициализации полей
}
 
//------------------------------------------------------------------------------------------------------------------
//виртуальный диструктор
text::~text(void)
{
    if(sfile)//если поток незакрыт закрываем его
    {sfile.close();}
}
 
//------------------------------------------------------------------------------------------------------------------
//инициализация полей
void text:: updata(const char*const cchcaddress,const char*const cchckey)
{
    //отрыть поток если он небыл уже открыт до этого
    if(!sfile)
    sfile.open(cchcaddress,std::ios::in);
    //если не удалось отркрыть поток
    if(!sfile)
    {
        //смена кодировки для вывода Русского языка в консоли
        setlocale(LC_ALL,"Russian_Russia.1251");
        //если badbit или faibit
        if(sfile.bad())
        {
            std::cerr<<"Невозможно открыть файл!";
            std::cerr<<"Неисправимая ошибка!\n";
            system("pause");//даём возможность взглянуть на сообщение
            setlocale(LC_ALL,"Russian_Russia.866");//возврат к стандартной кодировке
            exit(-1);
        }
        else if(sfile.fail())
        {
            std::cerr<<"Невозможно открыть файл!";
            std::cerr<<"Файл либо не существует либо не правильно указан путь к файлу!\n";
            system("pause");//пауза
            setlocale(LC_ALL,"Russian_Russia.866");//возврат к стандартной кодировке
            exit(-1);
        }
 
    }
    sfile.close();//закрываем поток для перезадачи атрибутов открытия
    sfile.open(cchcaddress,std::ios::in|std::ios::out|std::ios::binary);
    char ch;//для временного хранения символов
    sfile.get(ch);//задаем первое значение символа
    while(sfile)//продолжать пока не дойдём до конца файла
    {
        staticline+=ch;//добовляем посимвольно значения из файла в поле 
        sfile.get(ch);
    }
    //запись текста из файла в поле класса
    statickey=cchckey;//копирование ключа
 
}
 
//------------------------------------------------------------------------------------------------------------------
//статический метод для записи на диск
int text::write(void)
{
    if(!sfile)//если поток не открыт ничего не предпринемаем
    {   
        setlocale(LC_ALL,"Russian_Russia.1251");
        std::cerr<<"Провал записи!Закрыт поток\n";
        setlocale(LC_ALL,"Russian_Russia.866");
        return 1;
    }
    sfile<<staticresultline<<std::endl;//запись в файл
    return 0;
}
 
//------------------------------------------------------------------------------------------------------------------
//статический метод для чтения с диска
int text::read(void)
{
    if(!sfile)//если поток не открыт то ничего не предпринемаем
    {   
        setlocale(LC_ALL,"Russian_Russia.1251");
        std::cerr<<"Провал записи!Закрыт поток\n";
        setlocale(LC_ALL,"Russian_Russia.866");
        return 1;
    }
    char ch;//для временного хранения символов
    sfile.get(ch);//задаем первое значение символа
    while(sfile)//продолжать пока не дойдём до конца файла
    {
        staticline+=ch;//добовляем посимвольно значения из файла в поле 
        sfile.get(ch);
    }
    return 0;
}
//------------------------------------------------------------------------------------------------------------------
//фиктивная зашифровать разшифровать
int text:: unstencry(void)
{return 1;}
 
void text:: show(void)
{std::cout<<staticline<<statickey<<staticresultline<<std::endl;}
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
24.03.2012, 19:59     error LNK1120: 2 неразрешенных внешних элементов #4
вместо text.h в main приинклудь text.cpp
stawerfar
 Аватар для stawerfar
140 / 54 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
24.03.2012, 20:01  [ТС]     error LNK1120: 2 неразрешенных внешних элементов #5
Цитата Сообщение от igorrr37 Посмотреть сообщение
вместо text.h в main приинклудь text.cpp
Нет не катет ещё больше и другого рода стало ошибок писать!
C++
1
2
3
4
5
6
7
8
9
10
Ошибка  10  error LNK1169: обнаружен многократно определенный символ - один или более   D:\Project_VS_2010\C++\garbage\ecryption\Debug\ecryption.exe    1   1   ecryption
Ошибка  7   error LNK2005: "public: static class std::basic_fstream<char,struct std::char_traits<char> > text::sfile" (?sfile@text@@2V?$basic_fstream@DU?$char_traits@D@std@@@std@@A) уже определен в text.obj  D:\Project_VS_2010\C++\garbage\ecryption\ecryption\main3.obj    ecryption
Ошибка  6   error LNK2005: "public: static class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > text::statickey" (?statickey@text@@2V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@A) уже определен в text.obj    D:\Project_VS_2010\C++\garbage\ecryption\ecryption\main3.obj    ecryption
Ошибка  8   error LNK2005: "public: static class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > text::staticline" (?staticline@text@@2V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@A) уже определен в text.obj  D:\Project_VS_2010\C++\garbage\ecryption\ecryption\main3.obj    ecryption
Ошибка  9   error LNK2005: "public: static class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > text::staticresultline" (?staticresultline@text@@2V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@A) уже определен в text.obj  D:\Project_VS_2010\C++\garbage\ecryption\ecryption\main3.obj    ecryption
Ошибка  1   error LNK2005: "public: static void __cdecl text::updata(char const * const,char const * const)" (?updata@text@@SAXQBD0@Z) уже определен в text.obj D:\Project_VS_2010\C++\garbage\ecryption\ecryption\main3.obj    ecryption
Ошибка  3   error LNK2005: "public: virtual int __thiscall text::read(void)" (?read@text@@UAEHXZ) уже определен в text.obj  D:\Project_VS_2010\C++\garbage\ecryption\ecryption\main3.obj    ecryption
Ошибка  4   error LNK2005: "public: virtual int __thiscall text::unstencry(void)" (?unstencry@text@@UAEHXZ) уже определен в text.obj    D:\Project_VS_2010\C++\garbage\ecryption\ecryption\main3.obj    ecryption
Ошибка  2   error LNK2005: "public: virtual int __thiscall text::write(void)" (?write@text@@UAEHXZ) уже определен в text.obj    D:\Project_VS_2010\C++\garbage\ecryption\ecryption\main3.obj    ecryption
Ошибка  5   error LNK2005: "public: void __thiscall text::show(void)" (?show@text@@QAEXXZ) уже определен в text.obj D:\Project_VS_2010\C++\garbage\ecryption\ecryption\main3.obj    ecryption
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,154
Завершенные тесты: 1
24.03.2012, 20:01     error LNK1120: 2 неразрешенных внешних элементов #6
Цитата Сообщение от igorrr37 Посмотреть сообщение
вместо text.h в main приинклудь text.cpp
Нужно просто text.cpp добавить в проект.
Приинллюдить его считается дурным тоном.
stawerfar
 Аватар для stawerfar
140 / 54 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
24.03.2012, 20:05  [ТС]     error LNK1120: 2 неразрешенных внешних элементов #7
Да всё я изначально прикрепил куда следует, я даже пересоздавал проект и копировал заново текст файлов ошибка остается.
Миниатюры
error LNK1120: 2 неразрешенных внешних элементов  
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,154
Завершенные тесты: 1
24.03.2012, 20:07     error LNK1120: 2 неразрешенных внешних элементов #8
А ничего, что он в списке файлов ресурсов, а не в списке файлов исходного кода?

Добавлено через 1 минуту
Выложите text.h тоже
stawerfar
 Аватар для stawerfar
140 / 54 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
24.03.2012, 20:09  [ТС]     error LNK1120: 2 неразрешенных внешних элементов #9
Разницы нет, я так и так пробовал. Тем более что я создавал класс конструктором, в этом случае MSStudio само создает и ставит куда следует.

Добавлено через 1 минуту
text.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#pragma once
//объявления
#include<fstream>
#include<iostream>
#include<string>
#include<typeinfo>
//базовый класс текст
class text
{
    //protected:
    public:
        static std::fstream sfile;//указатель на поток
        static std::string staticline;//исходный текст
        static std::string statickey;//ключ
        static std::string staticresultline;//зашифрованый текст
        //конструктрор без параметров
        text(void);
        //конструктор с 2-мя параметрами
        text(const char*const,const char*const);
        //виртуальный диструктор
        virtual ~text(void);
        //статический метод инициализация полей
        static void updata(const char*const,const char*const);
        //запись на диск
        virtual int write(void);
        //чтение с диска
        virtual int read(void);
        //фиктивная зашифровать разшифровать
        virtual int unstencry(void);//=0;
        void show(void);
 
};
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,154
Завершенные тесты: 1
24.03.2012, 20:15     error LNK1120: 2 неразрешенных внешних элементов #10
У меня в VS 2008 собирается без ошибок.
Попробуйте в text.h объявить их так
C++
1
2
    text(){}
            ~text(){}
Добавлено через 34 секунды
А из text.cpp выкинуть
stawerfar
 Аватар для stawerfar
140 / 54 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
24.03.2012, 20:18  [ТС]     error LNK1120: 2 неразрешенных внешних элементов #11
Да помогло!!! Спасибо большое!!! А объяснить сможешь почему так произошло что бы в будущем избегать подобного?
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,154
Завершенные тесты: 1
24.03.2012, 20:26     error LNK1120: 2 неразрешенных внешних элементов #12
Цитата Сообщение от stawerfar Посмотреть сообщение
А объяснить сможешь почему так произошло что бы в будущем избегать подобного?
Не могу, у меня компилируется изначальный код.
Какой-то глюк в Вашем компиляторе.
А идея возникла так: описать отсутствующие функции как можно раньше.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.03.2012, 20:28     error LNK1120: 2 неразрешенных внешних элементов
Еще ссылки по теме:

C++ fatal error LNK1120: 1 неразрешенных внешних элементов C++
Error LNK1120: неразрешенных внешних элементов: 1 C++
Fatal error LNK1120: 1 неразрешенных внешних элементов C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
stawerfar
 Аватар для stawerfar
140 / 54 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
24.03.2012, 20:28  [ТС]     error LNK1120: 2 неразрешенных внешних элементов #13
В любом случае спасибо! Вроде нелепость а пол дня потерял!!!
Yandex
Объявления
24.03.2012, 20:28     error LNK1120: 2 неразрешенных внешних элементов
Ответ Создать тему
Опции темы

Текущее время: 15:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru