Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
2 / 2 / 0
Регистрация: 12.04.2017
Сообщений: 99

Ошибка компиляции простой программы

07.05.2017, 18:34. Показов 3735. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, читатели данной темы.Решил изучить C++ Win32 API.Но вот на сайте хотел скопировать код и глянуть как все работает, но не тут то было.Когда скопировал код, вставил и скомпилировал, то выскочила ошибка:


C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <windows.h>
 
 
int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   LPSTR lpCmdLine,
                   int nCmdShow)
{
 
        MessageBox(NULL, L"Привет, мир!!!", L"Оконная процедура", MB_OK);
        return NULL;
}
В чем ошибка?

Добавлено через 1 минуту
Ошибка в 10 ряде.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.05.2017, 18:34
Ответы с готовыми решениями:

При компиляции простой программы - ошибки
Работаю в простой IDE. Занимаюсь по учебникам и по видео на ютубе, при компиляции кода появляются ошибки (покажу на скриншоте) Причем я...

Ошибка в компиляции простой игры
Пишу код для игры, при компиляции выдает вот такую ошибку &quot;error CS1061: Type `Item' does not contain a definition for `bonusPerSec' and...

Что делать с .OCX при компиляции .EXE программы ? (простой вопрос)
Приветствую всех, Задаю совсем простой вопрос, прошу не смеяться. У меня есть программа на VB, и для ее работы нужен некоторый контрол...

21
70 / 70 / 35
Регистрация: 06.07.2016
Сообщений: 415
07.05.2017, 18:42
Цитата Сообщение от IDarknessI Посмотреть сообщение
выскочила ошибка:
Какая?
Используйте Visual Studio, создайте приложение под Windows, разрешите ему создать самому минимальное приложение, очистите его, подключите "stdafx.h" и "ProjectName.h" и все заработает.
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
07.05.2017, 19:00
IDarknessI, текст ошибке где?
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
07.05.2017, 19:34
L"Привет, мир!!!" TEXT("Привет, мир!!!")
0
21 / 21 / 10
Регистрация: 11.09.2015
Сообщений: 103
07.05.2017, 20:04
IDarknessI, найди отличие
C++
1
2
3
4
5
6
7
8
9
10
11
// Microsoft cl /EHsc /W4 Hello.cpp User32.lib
#include <windows.h>
 
int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   LPSTR lpCmdLine,
                   int nCmdShow)
{
  MessageBox (NULL, "Привет, мир!!!", "Оконная процедура", MB_OK);
  return 0;
}
Добавлено через 3 минуты
Запись L"Текст" задаёт 16-битовый Unicode. А Бокс ждёт 8-битовый ANSI
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
07.05.2017, 20:06
Может, лучше юникод включить?
Или MessageBoxW().
1
9933 / 2936 / 494
Регистрация: 05.10.2013
Сообщений: 7,965
Записей в блоге: 232
07.05.2017, 22:16
Чтобы независимо от настроек работало. В вашем коде замените:
LPSTR -> LPTSTR
L -> _T()
WinMain -> _tWinMain

На будущее:
char -> TCHAR
char* -> LPTSTR

C++
1
2
3
4
5
6
7
8
9
10
11
#include <windows.h>
#include <tchar.h>
 
int WINAPI _tWinMain(HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPTSTR lpCmdLine,
    int nCmdShow)
{
    MessageBox(NULL, _T("Привет, мир!!!"), _T("Оконная процедура"), MB_OK);
    return NULL;
}
0
 Аватар для iDReeM
64 / 68 / 18
Регистрация: 21.10.2015
Сообщений: 228
10.05.2017, 22:13
Цитата Сообщение от nmcf Посмотреть сообщение
Может, лучше юникод включить?
Или MessageBoxW().
MessageBoxW
BoxW
W
Привет, мир!!!
юникод, крилица, юникод, крилица

Добавлено через 15 секунд
Цитата Сообщение от nmcf Посмотреть сообщение
Может, лучше юникод включить?
Или MessageBoxW().
MessageBoxW
BoxW
W
Привет, мир!!!
юникод, крилица, юникод, крилица
0
 Аватар для Argus19
1427 / 444 / 78
Регистрация: 24.09.2017
Сообщений: 2,525
Записей в блоге: 22
25.06.2019, 18:30
8Observer8 , вставил ваш код в файл
Вот, что получил:
1> Обращение к "Debug\hello.unsuccessfulbuild".
1>ClCompile:
1> hello.cpp
1>ManifestResourceCompile:
1> Для всех выходных данных обновления не требуется.
1>LINK : fatal error LNK1123: сбой при преобразовании в COFF: файл недопустим или поврежден
1>
1>СБОЙ построения.
1>
1>Затраченное время: 00:00:01.75
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
0
9933 / 2936 / 494
Регистрация: 05.10.2013
Сообщений: 7,965
Записей в блоге: 232
25.06.2019, 19:37
Argus19, попробуйте этот проект запустить, который выводит кнопку в V2015: Button.zip

main.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
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
#include <windows.h>
#include <tchar.h>
#include "resource.h"
 
LRESULT CALLBACK WindowProc(HWND hwnd,
    UINT uMsg,
    WPARAM wParam,
    LPARAM lParam);
 
LPCTSTR ClassName = _T("SimpleWinClass");
LPCTSTR AppName = _T("Our First Window");
LPCTSTR MenuName = _T("IDR_MENU1");
 
HINSTANCE hInstance;
 
int WINAPI _tWinMain(HINSTANCE hInst,
    HINSTANCE hPrevInstance,
    LPTSTR lpCmdLine,
    int nCmdShow)
{
    WNDCLASSEX wc;
    MSG msg;
    HWND hwnd;
 
    wc.cbSize = sizeof(WNDCLASSEX);
    wc.style = CS_HREDRAW | CS_VREDRAW;
    wc.lpfnWndProc = WindowProc;
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    hInstance = hInst;
    wc.hInstance = hInstance;
    wc.hIcon = LoadIcon((HINSTANCE)NULL, IDI_APPLICATION);
    wc.hCursor = LoadCursor((HINSTANCE)NULL, IDC_ARROW);
    wc.hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1);
    wc.lpszMenuName = MenuName;
    wc.lpszClassName = ClassName;
    wc.hIconSm = LoadIcon((HINSTANCE)NULL, IDI_APPLICATION);
 
    if (RegisterClassEx(&wc) == 0)
    {
        MessageBox(NULL, _T("Cannot regiser window class"), _T("Error"), MB_ICONERROR);
        return FALSE;
    }
 
    hwnd = CreateWindowEx(WS_EX_CLIENTEDGE,
        ClassName,
        AppName,
        WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        300,
        200,
        (HWND)NULL,
        (HMENU)NULL,
        hInst,
        NULL);
 
    if (hwnd == NULL)
    {
        MessageBox(NULL, _T("Cannot create window"), _T("Error"), MB_ICONERROR);
        return FALSE;
    }
 
    ShowWindow(hwnd, SW_SHOWDEFAULT);
    UpdateWindow(hwnd);
 
    while (GetMessage(&msg, NULL, 0, 0) != 0)
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
 
    return msg.wParam;
}
 
#define BSIZE 512
#define ButtonID 1
#define EditID 2
 
LPCTSTR ButtonClassName = _T("button");
LPCTSTR ButtonText = _T("My First Button");
LPCTSTR EditClassName = _T("edit");
LPCTSTR TestString = _T("Wow! I'm in an edit box now");
 
LRESULT CALLBACK WindowProc(HWND hWnd,
    UINT uMsg,
    WPARAM wParam,
    LPARAM lParam)
{
    static HWND hwndEdit;
    static HWND hwndButton;
    TCHAR buffer[BSIZE];
 
    switch (uMsg)
    {
        case WM_DESTROY:
            PostQuitMessage(0);
            break;
        case WM_CREATE:
            hwndEdit = CreateWindowEx(WS_EX_CLIENTEDGE,
                EditClassName,
                NULL,
                WS_CHILD | WS_VISIBLE | WS_BORDER | ES_LEFT | ES_AUTOHSCROLL,
                50, 35,
                200, 25,
                hWnd,
                (HMENU)NULL,
                hInstance,
                NULL);
            SetFocus(hwndEdit);
 
            hwndButton = CreateWindowEx(0,
                ButtonClassName,
                ButtonText,
                WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
                75, 70,
                140, 25,
                hWnd,
                (HMENU)ButtonID,
                hInstance,
                NULL);
            break;
        case WM_COMMAND:
            if (lParam == 0)
            {
                if (LOWORD(wParam) == ID_TESTCONTROLS_SAYHELLO)
                {
                    SetWindowText(hwndEdit, TestString);
                    SendMessage(hwndEdit, WM_KEYDOWN, (WPARAM)VK_END, (LPARAM)NULL);
                }
                else if (LOWORD(wParam) == ID_TESTCONTROLS_CLEAREDITBOX)
                {
                    SetWindowText(hwndEdit, NULL);
                }
                else if (LOWORD(wParam) == ID_TESTCONTROLS_GETTEXT)
                {
                    GetWindowText(hwndEdit, buffer, BSIZE);
                    MessageBox(NULL, buffer, AppName, MB_OK);
                }
                else
                {
                    DestroyWindow(hWnd);
                }
            }
            else
            {
                if (LOWORD(wParam) == ButtonID)
                {
                    if (HIWORD(wParam) == BN_CLICKED)
                    {
                        SendMessage(hWnd, WM_COMMAND, ID_TESTCONTROLS_GETTEXT, 0);
                    }
                }
            }
            break;
        default:
            return DefWindowProc(hWnd, uMsg, wParam, lParam);
    }
 
    return 0;
}


resource.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by Button.rc
//
#define ID_TESTCONTROLS_SAYHELLO 1
#define ID_TESTCONTROLS_CLEAREDITBOX 2
#define ID_TESTCONTROLS_GETTEXT 3
#define ID_TESTCONTROLS_EXIT 4
 
// Next default values for new objects
// 
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE        102
#define _APS_NEXT_COMMAND_VALUE         40005
#define _APS_NEXT_CONTROL_VALUE         1001
#define _APS_NEXT_SYMED_VALUE           101
#endif
#endif


Button.rc
Code
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
// Microsoft Visual C++ generated resource script.
//
#include "resource.h"
 
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "winres.h"
 
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
 
/////////////////////////////////////////////////////////////////////////////
// Russian (Russia) resources
 
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS)
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
 
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
 
1 TEXTINCLUDE 
BEGIN
    "resource.h\0"
END
 
2 TEXTINCLUDE 
BEGIN
    "#include ""winres.h""\r\n"
    "\0"
END
 
3 TEXTINCLUDE 
BEGIN
    "\r\n"
    "\0"
END
 
#endif    // APSTUDIO_INVOKED
 
#endif    // Russian (Russia) resources
/////////////////////////////////////////////////////////////////////////////
 
 
/////////////////////////////////////////////////////////////////////////////
// English (United States) resources
 
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
 
/////////////////////////////////////////////////////////////////////////////
//
// Menu
//
 
IDR_MENU1 MENU
BEGIN
    POPUP "&Test Controls"
    BEGIN
        MENUITEM "Say Hello",                   ID_TESTCONTROLS_SAYHELLO
        MENUITEM "Clear Edit Box",              ID_TESTCONTROLS_CLEAREDITBOX
        MENUITEM "Get Text",                    ID_TESTCONTROLS_GETTEXT
        MENUITEM SEPARATOR
        MENUITEM "E&xit",                       ID_TESTCONTROLS_EXIT
    END
END
 
#endif    // English (United States) resources
/////////////////////////////////////////////////////////////////////////////
 
 
 
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
 
 
/////////////////////////////////////////////////////////////////////////////
#endif    // not APSTUDIO_INVOKED
1
 Аватар для Argus19
1427 / 444 / 78
Регистрация: 24.09.2017
Сообщений: 2,525
Записей в блоге: 22
25.06.2019, 21:39
Цитата Сообщение от 8Observer8 Посмотреть сообщение
попробуйте этот проект запустить, который выводит кнопку в V2015
У меня VC2010
>Файл проекта содержит ToolsVersion="14.0". Возможно, этот набор инструментов неизвестен или отсутствует (в этом случае проблему можно устранить, установив подходящую версию MSBuild), либо для данной сборки определено конкретное значение ToolsVersion в параметрах политики. Проект обрабатывается как имеющий ToolsVersion="4.0". Дополнительные сведения см. по ссылке http://go.microsoft.com/fwlink/?LinkId=291333.
1>C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Platfor ms\Win32\Microsoft.Cpp.Win32.Targets(511 ,5): error MSB8008: указанный набор инструментов платформы (v140) не установлен или недопустим. Убедитесь, что выбрано поддерживаемое значение PlatformToolset.
1>
0
9933 / 2936 / 494
Регистрация: 05.10.2013
Сообщений: 7,965
Записей в блоге: 232
25.06.2019, 23:19
Ошибка, которую вы процитировали, вам непонятна? Если нет, то я поясню.

Цитата Сообщение от Argus19 Посмотреть сообщение
указанный набор инструментов платформы (v140) не установлен или недопустим. Убедитесь, что выбрано поддерживаемое значение PlatformToolset.
Другими словами, здесь говорится, что в настройках "Platform Toolset" выставлена версия VS v14.0, то есть Visual Studio 2015, а у вас на компьютере VS2015 не была обнаружена. Поэтому напрашивается вывод, что нужно зайти в настройки проекта и выставить версию Visual Studio 2010, то есть v10.0 (я погуглил, что VS2010 имеет версию v10.0)
0
 Аватар для Argus19
1427 / 444 / 78
Регистрация: 24.09.2017
Сообщений: 2,525
Записей в блоге: 22
25.06.2019, 23:36
Он и стоИт:
Миниатюры
Ошибка компиляции простой программы  
0
9933 / 2936 / 494
Регистрация: 05.10.2013
Сообщений: 7,965
Записей в блоге: 232
26.06.2019, 08:43
Почему у вас окно называет "Страница свойств hello". Значит, вы открыли решение не моего проекта, который называется "Button". Выставите в моём проекте "Все конфигурации" и "Все платформы". Покажите скриншот, что набор инструментов выбран v10.0
0
9933 / 2936 / 494
Регистрация: 05.10.2013
Сообщений: 7,965
Записей в блоге: 232
26.06.2019, 08:47
Такой мне нужен скриншот для VS2010:

0
 Аватар для Argus19
1427 / 444 / 78
Регистрация: 24.09.2017
Сообщений: 2,525
Записей в блоге: 22
26.06.2019, 18:02
Такой?:
Миниатюры
Ошибка компиляции простой программы  
0
9933 / 2936 / 494
Регистрация: 05.10.2013
Сообщений: 7,965
Записей в блоге: 232
26.06.2019, 18:24
Да. А сейчас какая ошибка?
0
 Аватар для Argus19
1427 / 444 / 78
Регистрация: 24.09.2017
Сообщений: 2,525
Записей в блоге: 22
26.06.2019, 19:55
Та же самая:
>Файл проекта содержит ToolsVersion="14.0". Возможно, этот набор инструментов неизвестен или отсутствует (в этом случае проблему можно устранить, установив подходящую версию MSBuild), либо для данной сборки определено конкретное значение ToolsVersion в параметрах политики. Проект обрабатывается как имеющий ToolsVersion="4.0". Дополнительные сведения см. по ссылке http://go.microsoft.com/fwlink/?LinkId=291333.
1>InitializeBuildStatus:
1> Обращение к "Debug\Button.unsuccessfulbuild".
1>ClCompile:
1> Для всех выходных данных обновления не требуется.
1>ResourceCompile:
1> Для всех выходных данных обновления не требуется.
1>ManifestResourceCompile:
1> Для всех выходных данных обновления не требуется.
1>LINK : fatal error LNK1123: сбой при преобразовании в COFF: файл недопустим или поврежден
1>
0
9933 / 2936 / 494
Регистрация: 05.10.2013
Сообщений: 7,965
Записей в блоге: 232
26.06.2019, 20:07
Почему VS попрежнему видит 2015-ю версию? Не понимаю. Может сделать Clean (Очистить) и Rebuild (Пересобрать)?

Добавлено через 7 минут
Цитата Сообщение от Argus19 Посмотреть сообщение
LINK : fatal error LNK1123: сбой при преобразовании в COFF: файл недопустим или поврежден
Это ошибку я погуглил: "fatal error LNK1123". Одну из первых ссылок выдаёт такую. Там написано, что нужно обновить "Visual Studio 2010 RTM" до "VS 2010 SP1". Как я понял, RTM - это ранний релиз и в нём не существовала возможности открыть решение новых версий VS. Если у тебя RTM, то обнови хоты бы до настоящего релиза "VS 2010 SP1"
0
51 / 32 / 19
Регистрация: 25.05.2019
Сообщений: 95
26.06.2019, 20:36
От души веселите...

Argus19, Visual Studio / File / создайте / новый проект / win32 (можно пустой)
прикрепите файлы 8Observer8, нажмите F5 - наслаждаетесь.

Если проблема с файлом-ресурсов создайте меню вашей студией
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.06.2019, 20:36
Помогаю со студенческими работами здесь

Ошибка компиляции простой формы с кнопкой выхода
Привет всем. Решил сделать простой проект. На форму пометил кнопку, два раза щёлкнул по ней, открыл конструктор. Прописал такой код: ...

Модули и метод простой итерации - ошибка при компиляции
Здравствуйте. В программе по теме модульного программирования выходит ошибка при компиляции второго модуля &quot;error3: unknown...

Ошибка компиляции программы
Всем доброго вечера. Не получается запустить программу, в чем может быть дело ? Компилятор Турбо Си++ 3.0 #include...

Ошибка компиляции программы
Здравствуйте. Qt 5.0.0 Qt Creator 2.6.1 При компиляции программы вылетает следующая ошибка: Вот как у меня выглядят...

Ошибка компиляции программы
Да, я знаю, что это не так легко, но все же. Я пробовал создать самоклонирующуюся программу - получилось. Тогда я попробовал создать...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru