Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 12.09.2012
Сообщений: 92
Записей в блоге: 1

Не могу скомпилировать ошибка, ссылка на неразрешенный внешний символ

02.10.2013, 20:37. Показов 1296. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Получено следующую ошибку в результате компилирование.
Возможно у меня проблема возникла с проэктом прошу скомпилировать, для начала, спасибо.
Ошибка 10 error LNK2019: ссылка на неразрешенный внешний символ "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl operator-(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (??G@YA?AV?$basic_string@DU?$char_traits @D@std@@V?$allocator@D@2@@std@@V01@0@Z) в функции "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl operator+(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (??H@YA?AV?$basic_string@DU?$char_traits @D@std@@V?$allocator@D@2@@std@@V01@0@Z) C:\Users\Катя\documents\visual studio 2012\Projects\test\Addition.obj

Реализация длинной арифметики
определение класса: longclass.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
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
    #include <iostream>
#include <stdio.h>
#include <fstream>
#include <stdlib.h>
#include <vector>
#include <string>
#include <stdio.h>
#include <windows.h>
#include <sstream>
#include <math.h>
#include <locale.h>
using namespace std;
 
class verylong
{
    int count1;
    int count2;
    string number1;
    string number2;
    int base;
    bool minus1;
    bool minus2;
public:
    verylong(void)
    {
    base=10;
    minus1=false;
    minus2=false;
    }
 
    int input(string digit1, string digit2) {   //анализатор строки
    int i;
    char tmp;
      if (digit1[0] == '-') {
          for (i=0; i<digit1.size()-1; i++) {
            number1+=digit1[i+1];
          }
       minus1=true;
       count1=digit1.size()-1;
       } else {
         number1=digit1;
         count1=digit1.size();
         }
       for (i=0; i<count1/2; i++) {
           tmp=number1[i];
           number1[i]=number1[(count1-1)-i];
           number1[(count1-1)-i]=tmp;
       }
 
    if (digit2[0] == '-') {
          for (i=0; i<digit2.size()-1; i++) {
            number2+=digit2[i+1];
          }
    minus2=true;
    count2=digit2.size()-1;
    } else {
     number2=digit2;
     count2=digit2.size();
     }
   for (i=0; i<count2/2; i++) {
       tmp=number2[i];
       number2[i]=number2[(count2-1)-i];
       number2[(count2-1)-i]=tmp;
   }
       digit1.clear();
       digit2.clear();
    return 0;
    }
 
    string reverse(string number) {
        double size=number.size(), i;
        char sym;
        for (i=0; i<size/2; i++) {
            sym=number[i];
            number[i]=number[(size-1)-i];
            number[(size-1)-i]=sym;
        }
    return number;
    }
    
    friend string operator+(const string sum1, const string sum2);
    friend string operator% (const string num1, const string num2);
 
 
 
 
    
 
    
    ~verylong(void)
    {
        number1.clear();
        number2.clear();
        minus1=false;
        minus2=false;
    }
};
Реализация функции суммирования:

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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
#include <iostream>
#include <math.h>
#include <string>
#include "StdAfx.h"
#include "longclass.h"
 
 
string operator+(const string sum1, const string sum2) {
    verylong TEMP;
    int i=0, carry=0, max=0, dif;
    string result, temp;
    bool flag=false;
    TEMP.input(sum1, sum2);
    result.clear();
    char sym;
    if (TEMP.count2>TEMP.count1) {
        result=TEMP.number1;
        TEMP.number1.clear();
        TEMP.number1=TEMP.number2;
        TEMP.number2.clear();
        TEMP.number2=result;
        result.clear();
        dif=TEMP.count1;
        TEMP.count1=TEMP.count2;
        TEMP.count2=dif;
        dif=0;
        flag=true;
    }
    if (TEMP.count2==TEMP.count1) {
        for (i=TEMP.count1-1; i>=0; i--) {
            if (int(TEMP.number1[i])<int(TEMP.number2[i])) {
                string temp;
                temp=TEMP.number2;
                TEMP.number2.clear();
                TEMP.number2=TEMP.number1;
                TEMP.number1.clear();
                TEMP.number1=temp;
                temp.clear();
                i=-1;
                flag=true;
            }
        }
    }
 
//если оба положительные
if ((TEMP.minus1==false && TEMP.minus2==false) || (TEMP.minus1==true && TEMP.minus2==true)) {
    if (TEMP.count1>TEMP.count2 || TEMP.count1==TEMP.count2) {
       dif=TEMP.count1-TEMP.count2;
       max=TEMP.count2;
    }
    for (i=0; i<max; i++) {
    result+=char(((int(TEMP.number1[i])-48)+((int(TEMP.number2[i])-48)+carry))%TEMP.base)+48;
    if (((int(TEMP.number1[i])-48)+(int(TEMP.number2[i]-48))+carry)>TEMP.base-1) {
    carry=1;
    } else
        carry=0;
    }
    if (TEMP.count1 != TEMP.count2) {
    for (i=max; i<TEMP.count1; i++) {
       if (TEMP.count1>TEMP.count2) {
           result+=char((int(TEMP.number1[i])-48+carry)%TEMP.base)+48;
           if ((int(TEMP.number1[i])-48+carry)>TEMP.base-1) {
           carry=1;
           } else
               carry=0;
       }
    }
    }
    if (carry==1) {
        result+=char(carry)+48;
    }
    carry=result.size();
    for (i=0; i<carry/2; i++) {
        sym=result[i];
        result[i]=result[(carry-1)-i];
        result[(carry-1)-i]=sym;
    }
}
if (TEMP.minus1==false && TEMP.minus2==false) {
   if (result.size()==0) {
      result+="0";
   }
   return result;
}
//если minus1=true и minus2=true
if (TEMP.minus1==true && TEMP.minus2==true) {
    temp=result;
    result.clear();
    result+="-";
    result+=temp;
    if (result.size()==0) {
      result+="0";
   }
   return result;
}
 
temp.clear();
if (TEMP.minus1==false && TEMP.minus2==true) {
//если number1>=number2
   if (!flag) {
   TEMP.minus1=false;
   TEMP.minus2=false;
   TEMP.number1=TEMP.reverse(TEMP.number1);
   TEMP.number2=TEMP.reverse(TEMP.number2);
   result=TEMP.number1-TEMP.number2;
   if (result.size()==0) {
      result+="0";
   }
   return result;
   } else {
     //иначе
    result.clear();
    TEMP.minus1=false;
    TEMP.minus2=false;
    TEMP.number1=TEMP.reverse(TEMP.number1);
    TEMP.number2=TEMP.reverse(TEMP.number2);
    temp=TEMP.number1-TEMP.number2;
    result+="-";
    result+=temp;
    if (result.size()==0) {
      result+="0";
   }
   return result;
   }
}
 
if (TEMP.minus1==true && TEMP.minus2==false) {
//если number1>=number2
   if (!flag) {
   result.clear();
   TEMP.minus1=false;
   TEMP.minus2=false;
   TEMP.number1=TEMP.reverse(TEMP.number1);
   TEMP.number2=TEMP.reverse(TEMP.number2);
   temp=TEMP.number1-TEMP.number2;
   if (temp[0]=='0' && temp.size()==1) { //если 0
       return temp;
   }
   result+="-";
   result+=temp;
   i=0, carry=0, max=0;
   flag=false;
   if (result.size()==0) {
      result+="0";
   }
   return result;
   } else {
   //иначе
     TEMP.minus1=false;
     TEMP.minus2=false;
     TEMP.number1=TEMP.reverse(TEMP.number1);
     TEMP.number2=TEMP.reverse(TEMP.number2);
     result=TEMP.number1-TEMP.number2;
     i=0, carry=0, max=0;
         flag=false;
         if (result.size()==0) {
         result+="0";
         }
     return result;
     }
}
}
main function :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 #include "StdAfx.h"
#include <string>
#include <math.h>
#include "longclass.h"
#include <conio.h>
 
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    verylong temp;
    int n, m;
    char sym='и';
    string module, key;
    string a="12233252", b="-2424";
    cout << a+b << endl;
 
    system("pause");
    return 0;
}
stadafx.h

C++
1
2
3
4
#include "targetever.h"
 
#include <stdio.h>
#include <tchar.h>
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.10.2013, 20:37
Ответы с готовыми решениями:

Не могу разобраться где ошибка!error LNK2019: ссылка на неразрешенный внешний символ
#include &quot;stdafx.h&quot; #include &quot;conio.h&quot; #include &quot;stdio.h&quot; #include &quot;stdlib.h&quot; #include &quot;string.h&quot; #include &quot;math.h&quot; #include...

Ошибка - ссылка на неразрешенный внешний символ
Написал две программы подряд. В них выскакивает одна и та же ошибка 1&gt;------ Построение начато: проект: 4, Конфигурация: Debug Win32...

Ошибка: ссылка на неразрешенный внешний символ
Уже час сижу не могу понять в чём дело. Получаю такие ошибки при компиляции: Файл интерфейса класса mystack.h: ...

6
249 / 219 / 63
Регистрация: 30.07.2013
Сообщений: 465
02.10.2013, 21:06
C++
1
temp=TEMP.number1-TEMP.number2;
Вычитание строк? Забавно.

P.S. Это и есть ошибка.
1
0 / 0 / 0
Регистрация: 12.09.2012
Сообщений: 92
Записей в блоге: 1
02.10.2013, 21:13  [ТС]
ем там должна была быть длина (count)...
ем каким образом вы определили ошибку, просто перебор кода или студия указывает вам строку где ошибка ?
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
02.10.2013, 21:18
Цитата Сообщение от _Kate_ Посмотреть сообщение
ем каким образом вы определили ошибку, просто перебор кода или студия указывает вам строку где ошибка ?
Вам же пишут:
Ошибка 10 error LNK2019: ссылка на неразрешенный внешний символ "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl operator-(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (??G@YA?AV?$basic_string@DU?$char_traits @D@std@@V?$allocator @D@2@@std@@V01@0@Z) в функции "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl operator+(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (??H@YA?AV?$basic_string@DU?$char_traits @D@std@@V?$allocator @D@2@@std@@V01@0@Z) C:\Users\Катя\documents\visual studio 2012\Projects\test\Addition.obj
0
193 / 170 / 32
Регистрация: 09.09.2013
Сообщений: 522
02.10.2013, 21:38
Цитата Сообщение от Croessmah Посмотреть сообщение
Вам же пишут:
еще бы понять что там написано))
0
0 / 0 / 0
Регистрация: 12.09.2012
Сообщений: 92
Записей в блоге: 1
02.10.2013, 21:43  [ТС]
вот именно
0
193 / 170 / 32
Регистрация: 09.09.2013
Сообщений: 522
02.10.2013, 22:02
Вандевурд Д., Джосаттис Н.М. - Шаблоны C++(2003)

6.6.1. Дешифровка ошибок-романов

Текст обычных сообщений об ошибках компиляции, как правило, является
лаконичным и отражающим суть ошибки. Например, когда компилятор говорит "class X has
no member ' fun'" (в классе X отсутствует член "fun"), то обычно не составляет
труда определить, что именно неверно в вашем коде (например, вы ошибочно ввели "run"
вместо "fun"). В случае шаблонов это не так. Рассмотрим относительно простой
фрагмент кода, в котором задействована стандартная библиотека C++. Он содержит
небольшую ошибку: используется list<string>, но поиск проводится с помощью объекта-
функции greater<int>, а не greater<string>:


std::list<std::string> coll

// Поиск первого элемента, большего "А"
std::list<std::string>::iterator pos;
pos = std::find_if(
coll.begin(),coll.end(), // Диапазон поиска
std::bind2nd(std::greater<int>(),"A"));// Критерий поиска
Такого рода ошибки часто случаются, когда программист вырезает и вставляет код,
но забывает внести в него необходимые изменения.
Одна из версий популярного компилятора GNU C++ выдает при этом приведенное
ниже сообщение об ошибке.



/local/include/stl/_algo.h: In function 'struct _STL::_Lis
t_iterator<_STL::basic_string<char,_STL: :char_traits<char>/
__STL: :allocator<char> >,_STL: :_Nonconst__traits<_.STL: :basic_
string<char,_STL::char_traits<char>,_STL ::allocator<char> >
> >_STL::find_if<_STL:: _List_.it era tor<_STL::basic_string<c
har,_STL::char_traits<char>,_STL::alloca tor<char> >,_STL::_
Nonconst_traits<_STL: :basic_string<char,_STL: : char_.traits<c
har>,_.STL: :allocator<char> > > >, _STL: :binder2nd<_STL: :gre
ater<int> > > (_STL: :_List_iterator<_.STL: :basic_string<char,
_STL::char_traits<char>,_STL::allocator< char> >,_STL::_Nonc
onst_traits<_STL::basic_string<char,_STL ::char_traits<char>
,_STL::allocator<char> > > >,_STL::_List_iterator<_STL::bas
ic_string<char,_STL::char_traits<char>,_ .STL::allocator<char
> >,_STL::_Nonconst_.traits<_.STL::basic_s tring<char,_STL::ch
ar_.traits<char>,_JSTL: :allocator<char> > > >,_STL::birider2nd
<_STL: :greater<int> >/__STL: : input_.it erator_tag) ' :/local/inc
lude/stl/_algo.h:115: instantiated from '_STL::find_if<_STL
::_List_Iterator<_.STL::basic_string<cha r,_STL::char_traits<i
char>,_STL::allocator<char> >,_STL::_.Nonconst_.traits<_STL::
basic_string<char,_STL::char_.traits<cha r>,_.STL::allocator<c
har> > > >, _STL::binder2nd<_STL::greater<int> > >(_STL::_L
ist_iterator<_STL: :basic_string<char,_STL: : char_.traits<char
>,_STL: :allocator<char> >,_STL: :Nonconst_traits<_STL: -.basic
_string<char,_STL::char_traits<char>,_ST L:: allocator<char>
> > >,_STL::List_iterator<STL::basic_string< char,_STL::cha
r_traits<char>,_STL:: allocator<char> >,_STL::_Nonconst_tra
its<_STL::basic_string<char,_STL::char_t raits<char>,_.STL::a
llocator<char> > > >_STL::binder2nd<_STL::greater<int> >)'t
estprog.cpp:18: instantiated from here/local/include/stl/_a
lgo.h:78: no match for call to •(_STL::binder2nd<_STL::grea
ter<int> >) (_STL::basic_string<char,_STL::char_trai ts<char
>,_STL::allocator<char> > &)¦/local/include/stl/_function.h
:261: candidates are: bool _STL::binder2nd<_STL::greater<in
t> >::operator ()(const int &) const




Такое сообщение на первый взгляд больше смахивает на роман, чем на
диагностическое сообщение, и одним своим видом способно полностью деморализовать новичков в
области шаблонов. Однако сообщения, подобные приведенному, при наличии некоторой
практики поддаются пониманию, и местонахождение ошибок можно легко определить.
В первой части нашего сообщения говорится, что ошибка произошла в экземпляре
шаблона функции (с ужасно длинным именем), запрятанном глубоко внутри
заголовочного файла / local /include/st 1 /_algo .h. Далее компилятор сообщает, почему он
сгенерировал этот конкретный экземпляр шаблона. В данном случае "отсчет" начинается
со строки 18 файла testprog.cpp (это файл, содержащий код нашего примера), в
которой вызывается генерация экземпляра шаблона f ind_if из строки 115 заголовочного
файла _algo. h. Компилятор сообщает все это для того, чтобы вы знали, что такие-то
экземпляры шаблонов сгенерированы, и смогли восстановить цепочку событий, которые
вызвали генерацию экземпляров шаблона.

Однако в случае нашего примера есть основания полагать, что должны быть инстанциро-
ваны все шаблоны. Но почему же тогда программа не работает? Ответ на этот вопрос
содержится в последней части сообщения, там, где говорится "no match for call" — это
означает, что вызов функции не может быть сгенерирован из-за несоответствия типов
аргументов и параметров. Более того, сразу же за этим в строке, содержащей "candidates are",
поясняется, что единственным типом-кандидатом является целочисленный тип (тип
параметра— const int&). Вернувшись назад, к строке 18, вы увидите std: :bind2nd
(std: :greater<int>(), "A") — строка действительно содержит целочисленный тип
(int), а он несовместим с объектами строкового типа, поиск которых проводится в нашем
>- примере. Стоит заменить <int> на std:: string — и проблема будет решена.
Нет сомнений в том, что сообщение об ошибке можно было структурировать получше.
Ничто не мешает опустить описание проблемы перед историей инстанцирования шаблонов,
а вместо развернутых имен наподобие "MyTemplate<YourTemplate<int> >"
выводить структурированные описания, например "MyTemplate<T>", где
Т = YourTemplate<int>, чтобы сократить чрезмерно длинные имена. Однако
нельзя отрицать и то, что вся информация в этом диагностическом сообщении в
некоторых ситуациях может оказаться весьма полезной. Поэтому не стоит удивляться
тому, что аналогичную информацию выдают и другие компиляторы (хотя в некоторых
из них используется упомянутая выше структуризация).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.10.2013, 22:02
Помогаю со студенческими работами здесь

Ошибка. Ссылка на неразрешенный внешний символ
Здравствуйте. Ошибка такая: LNK2019 ссылка на неразрешенный внешний символ _main в функции &quot;int __cdecl invoke_main(void)&quot;...

Ошибка: ссылка на неразрешенный внешний символ
Вообщем решил я тут скачать чужой код змейки(посмотреть что да как там), вроде подключил все библиотеки opengl. Но вот не задача,...

Ошибка LNK2019 ссылка на неразрешенный внешний символ
В заголовочном файле объявлен класс class cLogReader { public: cLogReader(int i) { }; ~cLogReader();

Ошибка компоновщика: ссылка на неразрешенный внешний символ
Ошибка: ссылка на неразрешенный внешний символ: в строчке: int y = SomeClass::Func(x); Почему я не понимаю. Если класс поместить в файл с...

Ошибка LNK2019 - ссылка на неразрешенный внешний символ
Доброго времени суток. При запуске выдается следующую ошибку: LNK2019 ссылка на неразрешенный внешний символ &quot;double __cdecl...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru