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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 407, средняя оценка - 4.67
first_zee
0 / 0 / 0
Регистрация: 06.06.2009
Сообщений: 3
#1

unresolved external symbol _main - C++

06.06.2009, 23:50. Просмотров 51947. Ответов 18
Метки нет (Все метки)

Создал новый проект в visual c++ запускаю пустой проект а при запуске выдает
Error 1 error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup MSVCRTD.lib
Error 2 fatal error LNK1120: 1 unresolved externals C:\Documents and Settings\first_zee\Мои документы\Visual Studio 2005\Projects\1\Debug\1.exe
мои действия
1 обшарил весь нет
2 перепробовал все варианты
3 даже переустановил вижул
4......жутко матерился
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.06.2009, 23:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос unresolved external symbol _main (C++):

Unresolved external symbol main referenced in function __tmainCRTStartup - C++
Ребята, у меня в солюшене 2 проекта. Один - статическая библиотека, другой - GUI. При компиляции, выскакивает ошибка(которая в теме...

main.obj : error LNK2019: unresolved external symbol - C++
Класс Circle (круг). Класс хранит Декартовы координаты центра круга, а также значения точки, на кругу. Должны быть предусмотренные...

Unresolved external symbol, unresolved token - C++
Всем привет. У меня тут такое дело: // learncpp.cpp : main project file. #include "stdafx.h" int main() { const int...

Unresolved external symbol - C++
Error 1 error LNK2001: unresolved external symbol "public: void __thiscall Lab3::HashTable::addElement(char *,char *,float)"...

unresolved external symbol - C++
Добрый день. :) Стоит задача разработать шаблонный класс комплексных чисел. Одним из пунктов является решение квадратного уравнения с...

Unresolved external symbol - C++
Я понимаю что ошибка LNK2019 обычно означает что есть объявление функции, но нет ее тела. В моем случае у меня как то через раз это...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Search..
Заказ софта
340 / 185 / 10
Регистрация: 26.05.2009
Сообщений: 863
07.06.2009, 00:04 #2
Что значит "запускаю пустой проэкт". Вы пытаетесь скомпилировать пустоту ?
0
first_zee
0 / 0 / 0
Регистрация: 06.06.2009
Сообщений: 3
07.06.2009, 00:07  [ТС] #3
даже не пустоту не компилирует(обычно и пустоту компилировал
)
0
Lolcht0
123 / 121 / 5
Регистрация: 30.03.2009
Сообщений: 766
07.06.2009, 00:29 #4
в каждой программе должна быть функция main, ругается, что ее нет
0
Search..
Заказ софта
340 / 185 / 10
Регистрация: 26.05.2009
Сообщений: 863
07.06.2009, 00:40 #5
Вот Вам пример простейшей программы:

C++
1
2
3
4
5
6
7
8
#include <stdio.h> /* Для того, чтобы функция printf могла работать */
 
int main(int argc, char * argv []) /* Main должен быть в любой программе! */
{ /* Открываем тело функции Main */
    printf("Hello World!\n"); /* Функция printf печатает сообщение на экран */
 
    return 0; /* Возвращаем нулевое значение операционке */
} /* Закрываем тело функции Main */
Добавлено через 4 минуты 32 секунды
Во-первых, компилятор не может компилировать пустоту.
Во-вторых, компилятор выдает сообщение об ошибке из-за того, что Вы пытаетесь откомпилировать пустоту. Этой ошибкой компилятор пытается у Вас спросить примерно это: "ЧТО МНЕ КОМПИЛИРОВАТЬ ?! ТЫ ЖЕ НИЧЕГО НЕ НАПИСАЛ!!!".
0
first_zee
0 / 0 / 0
Регистрация: 06.06.2009
Сообщений: 3
07.06.2009, 12:10  [ТС] #6
хорошо допустим хотел зто
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<iostream>
#include<windows.h>
using namespace std;
void main()
{
    for(;;)
    {
    POINT a;
    GetCursorPos(&a);
    Sleep(100);
    cout<<a.x<<' '<<a.y;
    if(a.x<500)
        break;
    }
 
};
0
Lolcht0
123 / 121 / 5
Регистрация: 30.03.2009
Сообщений: 766
07.06.2009, 13:22 #7
я рад за тебя! пропиши в свойствах проекта точку входа - функцию main
0
D1m0n
3 / 3 / 1
Регистрация: 10.05.2009
Сообщений: 9
07.06.2009, 20:31 #8
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
По моему такая ошибка возникает когда пытаешься запустить консольное приложение в проекте другого типа, т.е. Win32 Project, а не Win32 Console Project
(в Visual Studio по крайней мере)
3
Lolcht0
123 / 121 / 5
Регистрация: 30.03.2009
Сообщений: 766
07.06.2009, 21:08 #9
возникает. а все потому, что процедуры входа по-разному описаны
0
I.B.
1 / 1 / 0
Регистрация: 04.02.2010
Сообщений: 48
04.02.2010, 20:54 #10
Доброго времени суток ... прошу помощи вот по такому вопросу ... читаю книгу Юрия Щупака Win32 API ... там есть пример программы hello, world ... и вот компилятор выдаёт мне две ошибки

Error 1 error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup MSVCRTD.lib

Error 2 fatal error LNK1120: 1 unresolved externals C:\Users\STRELOK\Documents\Visual Studio 2008\Projects\Hello World 1\Debug\Hello World 1.exe


вот исходник:

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
#include <windows.h> 
 
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdLine)
{
    HWND hMainWnd;
    char classname[] = "MyClass";
    MSG msg;
    WNDCLASSEX wc;
    wc.cbSize           = sizeof(wc);
    wc.style            = CS_HREDRAW|CS_VREDRAW;
    wc.lpfnWndProc      = WndProc;
    wc.cbClsExtra       = 0;
    wc.cbWndExtra       = 0;
    wc.hInstance        = hInstance;
    wc.hIcon            = LoadIcon(NULL, IDI_APPLICATION);
    wc.hCursor          = LoadCursor(NULL, IDC_ARROW);
    wc.hbrBackground    = (HBRUSH)GetStockObject(WHITE_BRUSH);
    wc.lpszMenuName     = NULL;
    wc.lpszClassName    = classname;
    wc.hIconSm          = LoadIcon(NULL, IDI_APPLICATION);
 
 
    if(!RegisterClassEx(&wc))
    {
        MessageBox(NULL, "Cannot register class", "Error", MB_OK);
        return 0;
    }
    
    hMainWnd = CreateWindow(classname, "new", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, 
        CW_USEDEFAULT, 0, (HWND)NULL, (HMENU)NULL, (HINSTANCE)hInstance, NULL);
 
    if(!hMainWnd)
    {
        MessageBox(NULL, "Cannot create window", "Error", MB_OK);
        return 0;
    }
 
    ShowWindow(hMainWnd, nCmdLine);
 
    while(GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
 
    return msg.wParam;
}
 
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    HDC hDC;
    PAINTSTRUCT ps;
    RECT rect;
 
    switch (uMsg)
    {
    case WM_PAINT:
        hDC = BeginPaint(hWnd, &ps);
        GetClientRect(hWnd, &rect);
        DrawText(hDC, (LPCSTR)"Hello World 1", -1, &rect, DT_SINGLELINE|DT_CENTER|DT_VCENTER);
 
        EndPaint(hWnd, &ps);
        break;
    
    case WM_CLOSE:
        DestroyWindow(hWnd);
        break;
        
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
 
    default:
        return DefWindowProc(hWnd, uMsg, wParam, lParam);
    }
 
    return 0;
}
в свойствах ставлю мультибайт ... среда 2008 года ...

Заранее спасибо )
1
Search..
Заказ софта
340 / 185 / 10
Регистрация: 26.05.2009
Сообщений: 863
05.02.2010, 03:17 #11
Используется Unicode-версия класса окна (WNDCLASSEX), а полю ws.lpszClassName присваиваешь ANSI строку . . . Еще есть некоторые ошибки. Так будет правильнее:

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
//////////////////////////////////////////////////////////////////////////////
#define _UNICODE
#define UNICODE
//////////////////////////////////////////////////////////////////////////////
#include <windows.h> 
#include <tchar.h>
//////////////////////////////////////////////////////////////////////////////
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
//////////////////////////////////////////////////////////////////////////////
 
INT WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE, LPTSTR lpCmdLine, INT iShowCmd)
{
    MSG msg;
    HWND hMainWnd;
    WNDCLASSEX wc;
 
    //////////////////////////////////////////////////////////////////////////////
    wc.cbSize               = sizeof(wc);
    wc.cbClsExtra           = NULL;
    wc.cbWndExtra           = NULL;
    wc.hbrBackground        = (HBRUSH)GetStockObject(WHITE_BRUSH);
    wc.hCursor              = LoadCursor(NULL, MAKEINTRESOURCE(IDC_ARROW));
    wc.hIcon                = LoadIcon(NULL, MAKEINTRESOURCE(IDI_APPLICATION));
    wc.hIconSm              = LoadIcon(NULL, MAKEINTRESOURCE(IDI_APPLICATION));
    wc.hInstance            = hInstance;
    wc.lpfnWndProc          = WndProc;
    wc.lpszClassName        = _T("MyClass");
    wc.lpszMenuName         = NULL;
    wc.style                = CS_HREDRAW | CS_VREDRAW;
    //////////////////////////////////////////////////////////////////////////////
 
 
    if(!RegisterClassEx(&wc))
    {
        MessageBox(NULL, _T("Cannot register class"), _T("Error"), MB_ICONSTOP);
        return FALSE;
    }
 
    hMainWnd = CreateWindowEx(NULL, _T("MyClass"), _T("new"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, 
        CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
 
    if(!hMainWnd)
    {
        MessageBox(NULL, _T("Cannot create window"), _T("Error"), MB_ICONSTOP);
        return FALSE;
    }
 
    ShowWindow(hMainWnd, iShowCmd);
 
    while(GetMessage(&msg, NULL, NULL, NULL))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
 
    return msg.wParam;
}
 
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    HDC hDC;
    PAINTSTRUCT ps;
    RECT rect;
 
    switch (uMsg)
    {
    case WM_PAINT:
        hDC = BeginPaint(hWnd, &ps);
        //////////////////////////////////////////////////////////////////////////////
        GetClientRect(hWnd, &rect);
        DrawText(hDC, _T("Hello World !"), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
        //////////////////////////////////////////////////////////////////////////////
        EndPaint(hWnd, &ps);
        break;
 
    case WM_CLOSE:
        DestroyWindow(hWnd);
        break;
 
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
 
    default:
        return DefWindowProc(hWnd, uMsg, wParam, lParam);
    }
 
    return FALSE;
}
0
nazavrik
22 / 22 / 2
Регистрация: 17.09.2008
Сообщений: 130
05.02.2010, 12:35 #12
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от I.B. Посмотреть сообщение
Доброго времени суток ... прошу помощи вот по такому вопросу ... читаю книгу Юрия Щупака Win32 API ... там есть пример программы hello, world ... и вот компилятор выдаёт мне две ошибки

Error 1 error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup MSVCRTD.lib

Error 2 fatal error LNK1120: 1 unresolved externals C:\Users\STRELOK\Documents\Visual Studio 2008\Projects\Hello World 1\Debug\Hello World 1.exe


в свойствах ставлю мультибайт ... среда 2008 года ...

Заранее спасибо )
У тебя в настройках стоит консольный проект. Отключи или переключи на виндосовский в Properties -> Linker -> System -> SubSystem -> NotSet (или Windows)
3
I.B.
1 / 1 / 0
Регистрация: 04.02.2010
Сообщений: 48
05.02.2010, 23:52 #13
nazavrik, спасибо )))
0
I.B.
1 / 1 / 0
Регистрация: 04.02.2010
Сообщений: 48
07.02.2010, 00:17 #14
Цитата Сообщение от Search.. Посмотреть сообщение
Используется Unicode-версия класса окна (WNDCLASSEX), а полю ws.lpszClassName присваиваешь ANSI строку . . . Еще есть некоторые ошибки. Так будет правильнее:

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
//////////////////////////////////////////////////////////////////////////////
#define _UNICODE
#define UNICODE
//////////////////////////////////////////////////////////////////////////////
#include <windows.h> 
#include <tchar.h>
//////////////////////////////////////////////////////////////////////////////
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
//////////////////////////////////////////////////////////////////////////////
 
INT WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE, LPTSTR lpCmdLine, INT iShowCmd)
{
    MSG msg;
    HWND hMainWnd;
    WNDCLASSEX wc;
 
    //////////////////////////////////////////////////////////////////////////////
    wc.cbSize               = sizeof(wc);
    wc.cbClsExtra           = NULL;
    wc.cbWndExtra           = NULL;
    wc.hbrBackground        = (HBRUSH)GetStockObject(WHITE_BRUSH);
    wc.hCursor              = LoadCursor(NULL, MAKEINTRESOURCE(IDC_ARROW));
    wc.hIcon                = LoadIcon(NULL, MAKEINTRESOURCE(IDI_APPLICATION));
    wc.hIconSm              = LoadIcon(NULL, MAKEINTRESOURCE(IDI_APPLICATION));
    wc.hInstance            = hInstance;
    wc.lpfnWndProc          = WndProc;
    wc.lpszClassName        = _T("MyClass");
    wc.lpszMenuName         = NULL;
    wc.style                = CS_HREDRAW | CS_VREDRAW;
    //////////////////////////////////////////////////////////////////////////////
 
 
    if(!RegisterClassEx(&wc))
    {
        MessageBox(NULL, _T("Cannot register class"), _T("Error"), MB_ICONSTOP);
        return FALSE;
    }
 
    hMainWnd = CreateWindowEx(NULL, _T("MyClass"), _T("new"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, 
        CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
 
    if(!hMainWnd)
    {
        MessageBox(NULL, _T("Cannot create window"), _T("Error"), MB_ICONSTOP);
        return FALSE;
    }
 
    ShowWindow(hMainWnd, iShowCmd);
 
    while(GetMessage(&msg, NULL, NULL, NULL))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
 
    return msg.wParam;
}
 
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    HDC hDC;
    PAINTSTRUCT ps;
    RECT rect;
 
    switch (uMsg)
    {
    case WM_PAINT:
        hDC = BeginPaint(hWnd, &ps);
        //////////////////////////////////////////////////////////////////////////////
        GetClientRect(hWnd, &rect);
        DrawText(hDC, _T("Hello World !"), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
        //////////////////////////////////////////////////////////////////////////////
        EndPaint(hWnd, &ps);
        break;
 
    case WM_CLOSE:
        DestroyWindow(hWnd);
        break;
 
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
 
    default:
        return DefWindowProc(hWnd, uMsg, wParam, lParam);
    }
 
    return FALSE;
}
Search, а для чего вы определили макрос юникод и везде где есть char-строки делаете преобразование типов? И почему два макроса?
0
nazavrik
22 / 22 / 2
Регистрация: 17.09.2008
Сообщений: 130
07.02.2010, 00:38 #15
По поводу char-строк.

Макрос _T() работает так: если проект использует ANSI строки, то он оставляет строки без изменений, а если проект использует UNICODE строки, то он преобразовывает ANSI строку в UNICODE.

По умолчанию в последних версиях VS стоит "Use Unicode Character Set". Если ты переключил на "Use Multi-Byte Character Set" (а ты переключил ), то никакого преобразования нет. По факту избыточный код.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.02.2010, 00:38
Привет! Вот еще темы с ответами:

unresolved external symbol - C++
в glm.h сидят структуры вида struct Vector2D; struct Vector3D; struct Vector4D; struct Matrix2D; struct Matrix3D; struct...

unresolved external symbol - C++
Доброе время собственно не понимаю почему компилатор ругается. Файлы : main.cpp #include &quot;Header.h&quot; #include &lt;stdio.h&gt; #include...

Unresolved external symbol - C++
policy.h #ifndef POLICY_H #define POLICY_H #include &lt;forward_list&gt; #include &quot;vector.h&quot; struct PolicyVector ...

Unresolved external symbol - C++
Чем больше я сталкиваюсь с этой ошибкой и чем больше решаю её, тем непонятнее она становится. Скопировал код из одного проекта VS в другой,...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
07.02.2010, 00:38
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru