Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
8 / 8 / 4
Регистрация: 14.05.2010
Сообщений: 133

Ошибка при отображении русских шрифтов в консоли: "error LNK2019: ссылка на неразрешенный внешний символ"

30.10.2012, 10:26. Показов 2384. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток! решил модернизировать простенькую программу, чтобы отображался русский шрифт в консоли, делаю согласно книги, но не выходит...
Основной текст программы:

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
//Concatenate - объединение двух строк, которые
//разделяются символом "-"
 
#include "stdafx.h"
#include "stdio.h"
#include "iostream"
#include "cstdlib" //для объявления system ("pause")
//#include "clocale" //для отоброжения русских букв в VISUAL STUDIO
#include "converts.h"
 
//Включаем файл, необходимый для использования
//функций работы со строками
#include "string.h"
 
using namespace std;// чтобы не использовать приставку std:: cout........
 
//Объявление прототипов
void concatString (char szTarget [], char szSource []);
 
int main (int nArg, char* pszArgs [])
{
    //setlocale(LC_ALL, "Russian_Russia.1251");// отоброжение русских букв в VISUAL STUDIO
 
    //считываем первую строку
    char szString1 [256];
    print_cp866("Введите строку №1: ", PRINT_ENDL);
    //cout << "Введите строку №1: ";
    cin.getline (szString1, 128);
 
    //...теперь вторую
    char szString2 [128];
    cout << "Введите строку №2: ";
    cin.getline (szString2, 128);
 
    //...присоединим "-" к первой строке...
    concatString (szString1, "-");
    //strcat (szString1, "-");
 
    //...теперь добавим вторую строку...
    concatString (szString1, szString2);
    //strcat (szString1, szString2);
 
    //...и выведем результат на экран
    cout << "\n" << szString1 << "\n";
 
    system ("pause");
    return 0;
}
 
// concatString - присоединяет строку szSource
// к концу строки szTarget
 
void concatString (char szTarget [], char szSource [])
 
{
    //находим конец первой строки
    int targetIndex = 0;
    while(szTarget [targetIndex])
    {
        targetIndex++;
    }
 
    //присоединяем вторую строку к концу первой
    int sourceIndex = 0;
    while (szSource [sourceIndex])
    {
        szTarget [targetIndex] = szSource [sourceIndex];
        targetIndex++;
        sourceIndex++;
    }
 
    //вписываем в конец ноль-символ
    szTarget [targetIndex] = '\0';
}
по книги написано добавить следующий срр файл:

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
#include "stdafx.h"
#include "iostream"
#include "cstring"
#include "new"
#include "windows.h"
#include "converts.h"
 
//вывод строки в кодировке CP866
void print_cpp866(const char *str, short int x)
{
    char *buf;
    try
    {
        buf = new char [std::strlen (str) + 1];
    }
    catch (std::bad_alloc err)
    {
        return;
    }
    CharToOemA (str, buf);
    switch (x)
    {
    case 0: std::cout << buf; break;
    case 1: std::cout << buf << std::endl; break;
    case 2: std::cout << buf << " "; break;
    default: std::cout << buf; break;
    }
    delete [] buf;
}
//преобразование строки в кодировку CP866
void convert_to_cp866(char *str)
{
    char *buf;
    try
    {
        buf = new char [std::strlen(str) + 1];
    }
    catch (std::bad_alloc err)
    {
        return;
    }
    CharToOemA (str, buf);
    // std::strcpy(str, buf); // для MinGW
    strcpy_s (str, std::strlen(str) + 1, buf);// для VC++
    delete [] buf;
}
 
//преобразование строки в кодировку Windows-1251
void convert_to_cp1251(char *str)
{
    char *buf;
    try
    {
        buf = new char [std::strlen(str) + 1];
    }
    catch (std::bad_alloc err)
    {
        return;
    }
    OemToCharA (str, buf);
    // std::strcpy(str, buf); //для MinGW
    strcpy_s (str, std::strlen(str) + 1, buf); //Для VC++
    delete [] buf;
}
и заголовочный:

C++
1
2
3
4
5
6
7
8
9
#ifndef CONVERTS_H
#define CONVERTS_H
 
const short int PRINT_ENDL = 1;
const short int PRINT_SPACE = 2;
void print_cp866 (const char *str, short int x = 0);
void convert_to_cp866(char *str);
void convert_to_cp1251(char *str);
#endif
после этого проблем с компиляцией быть не должно... решил попробовать с первой строкой программы и сразу же ошибка=( подскажите что не так?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.10.2012, 10:26
Ответы с готовыми решениями:

Ошибка при написании класса: error LNK2019: ссылка на неразрешенный внешний символ
Код: int _tmain(int argc, _TCHAR* argv) { Fraction x, x2, y, y2, fl, res, c; cout &lt;&lt; &quot;...&quot; &lt;&lt; endl; x.setFraction(); ...

Ошибка при работе со структурами: error LNK2019: ссылка на неразрешенный внешний символ _main
#include&lt;iostream&gt; using namespace std; struct baza_film { char name_film ; char name_director ; char genre ; int...

Ошибка error LNK2019: ссылка на неразрешенный внешний символ
Здравствуйте! Помогите пожалуйста! Компоновщик выдаёт ошибку error LNK2019: ссылка на неразрешенный внешний символ &quot;class...

5
 Аватар для David Sylva
1321 / 983 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
30.10.2012, 10:39
покажи ошибки
0
8 / 8 / 4
Регистрация: 14.05.2010
Сообщений: 133
30.10.2012, 10:44  [ТС]
1. error LNK2019: ссылка на неразрешенный внешний символ "void__cdecl print_cp866 (char const*,short)" (?print_cp866@@YAXPBDF@Z) в функции _main

2. error LNK1120: 1 неразрешенных внешних элементов
0
545 / 344 / 12
Регистрация: 05.11.2010
Сообщений: 1,076
Записей в блоге: 1
30.10.2012, 11:00
Твой файл converts.cpp судя по всему не компилируется, добавь его в проект.
0
8 / 8 / 4
Регистрация: 14.05.2010
Сообщений: 133
30.10.2012, 11:03  [ТС]
Цитата Сообщение от Герц Посмотреть сообщение
Твой файл converts.cpp судя по всему не компилируется, добавь его в проект.
Создавал полностью новый проект... и создавал вложения в него, поэтому все прикреплено...

отдельно convert.cpp компилируется как служебная программа...
0
8 / 8 / 4
Регистрация: 14.05.2010
Сообщений: 133
30.10.2012, 11:48  [ТС]
Сделал так:

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
//Включаем файл, необходимый для использования
//функций работы со строками
#include "string.h"
 
using namespace std;// чтобы не использовать приставку std:: cout........
 
//Объявление прототипов
void concatString (char szTarget [], char szSource []);
 
int main (int nArg, char* pszArgs [])
{
    //считываем первую строку
    char szString1 [128];
 
    char s1 [] = "Введите строку №1: ";
    convert_to_cp866(s1);
    cout << s1;
 
    //cout << "Введите строку №1: ";
    cin.getline (szString1, 128);
 
    //...теперь вторую
    char szString2 [128];
 
    char s2 [] = "Введите строку №2: ";
    convert_to_cp866(s2);
    cout << s2;
 
    //cout << "Введите строку №2: ";
    cin.getline (szString2, 128);
 
    //...присоединим "-" к первой строке...
    concatString (szString1, " - ");
    //strcat (szString1, "-");
 
    //...теперь добавим вторую строку...
    concatString (szString1, szString2);
    //strcat (szString1, szString2);
 
    //...и выведем результат на экран
    cout << "\n" << szString1 << "\n";
 
    system ("pause");
    return 0;
}
 
// concatString - присоединяет строку szSource
// к концу строки szTarget
 
void concatString (char szTarget [], char szSource [])
 
{
    //находим конец первой строки
    int targetIndex = 0;
    while(szTarget [targetIndex])
    {
        targetIndex++;
    }
 
    //присоединяем вторую строку к концу первой
    int sourceIndex = 0;
    while (szSource [sourceIndex])
    {
        szTarget [targetIndex] = szSource [sourceIndex];
        targetIndex++;
        sourceIndex++;
    }
 
    //вписываем в конец ноль-символ
    szTarget [targetIndex] = '\0';
}
Компилируется и запускается, не могу понять, что за предупреждение???

warning C4627: #include "cstdlib": пропущен при поиске использования предкомпилированного заголовка
1> Добавление директивы в "StdAfx.h" или перестройка предкомпилированного заголовка

ПОДСКАЖИТЕ!!! спасибо заранее...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.10.2012, 11:48
Помогаю со студенческими работами здесь

Ошибка 1 error LNK2019: ссылка на неразрешенный внешний символ
Ошибка 1 error LNK2019: ссылка на неразрешенный внешний символ &quot;public: void __thiscall EDeque&lt;int&gt;::push_front(int const &amp;)&quot;...

Ошибка: error LNK2019: ссылка на неразрешенный внешний символ...
Не могу понять ошибку в своей программе! Ничего красным не подчёркивается, но программа не запускается. В окне &quot;Вывод&quot; в разделе...

Ошибка error LNK2019: ссылка на неразрешенный внешний символ
Здравствуйте, не уверен в эту ли тему пишу, но в теме специализированой по OpenGL мне ни кто ничего не сказал( Так вот, начал разбираться с...

Ошибка линковки - error LNK2019: ссылка на неразрешенный внешний символ
Что может быть не так? есть файл test.h #ifndef _T_ #define _T_ template&lt;class T&gt; class test { //.... };

Переопределение операции. Ошибка Error LNK2019: ссылка на неразрешенный внешний символ
Возникает такая ошибка: 1 error LNK2019: ссылка на неразрешенный внешний символ &quot;public: class three __thiscall three::operator=(class...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
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