g++ msdn c++

Модератор: Модераторы разделов

Ответить
Stamorey
Сообщения: 1
ОС: Win7

g++ msdn c++

Сообщение Stamorey »

Попробовал скомпилировать через cmd в win7 с помощью команды " gcc -o " (пустое окно msdn) вот такой код : , и ниже то, что выдал компилятор.
Тоже самое скомпилировал в проекте visual studio, все компилируется и работает без ошибок. Можно ли что-нибудь сделать с первым компилятором, чтобы он так же работал, или хотя бы подскажите как запустить компилятор visual studio из win cmd.

Код: Выделить всё

#include <Windows.h>
#define width 640
#define height 480

LRESULT CALLBACK WindowProc(HWND hwnd, UINT wMsg, WPARAM wParam, LPARAM lParam);
int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    WNDCLASSEX Ey;
    HWND hwnd;
    MSG wMsg;

    memset(&Ey, 0, sizeof(WNDCLASSEXW));
    Ey.cbSize = sizeof(WNDCLASSEX);
    Ey.hbrBackground = (HBRUSH)GetStockObject(GRAY_BRUSH);
    Ey.hCursor = LoadCursor(NULL, IDC_ARROW);
    Ey.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    Ey.hInstance = hInstance;
    Ey.lpfnWndProc = WindowProc;
    Ey.lpszClassName = "Eye";

    RegisterClassEx(&Ey);

    hwnd = CreateWindow(Ey.lpszClassName, "Eneky", WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX,
        (GetSystemMetrics(SM_CXSCREEN) - width) / 2, (GetSystemMetrics(SM_CYSCREEN) - height) / 2, width, height, NULL, NULL, NULL, NULL);

    ShowWindow(hwnd, nCmdShow);

    while (GetMessage(&wMsg, hwnd, NULL, NULL))
    {
        TranslateMessage(&wMsg);
        DispatchMessage(&wMsg);
    }

    return wMsg.wParam;

}
LRESULT CALLBACK WindowProc(HWND hwnd, UINT wMsg, WPARAM wParam, LPARAM lParam)
{
    switch (wMsg)
    {
    case WM_CLOSE:
        ExitProcess(0);
        break;
    default:
        return DefWindowProc(hwnd, wMsg, wParam, lParam);
        break;
    }


}


Писал в cmd :
C:\MinGW\bin\g++ C:\stamor\hih.c -o C:\stamor\hih.exe


Вот что выдает:


C:\stamor\hih.c: In function 'int WinMain(HINSTANCE, HINSTANCE, LPSTR, int)':
C:\stamor\hih.c:28:43: warning: passing NULL to non-pointer argument 3 of 'BOOL
GetMessageA(LPMSG, HWND, UINT, UINT)' [-Wconversion-null]
while (GetMessage(&wMsg, hwnd, NULL, NULL))
^
C:\stamor\hih.c:28:43: warning: passing NULL to non-pointer argument 4 of 'BOOL
GetMessageA(LPMSG, HWND, UINT, UINT)' [-Wconversion-null]
C:\Users\Moryak\AppData\Local\Temp\cce97p6y.o:hih.c:(.text+0x34): undefined refe
rence to `GetStockObject@4'
collect2.exe: error: ld returned 1 exit status
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: g++ msdn c++

Сообщение Bizdelnick »

Вы немножко ошиблись форумом. Так что только самый общий ответ:

Stamorey писал(а):
13.02.2016 20:40
C:\Users\Moryak\AppData\Local\Temp\cce97p6y.o:hih.c:(.text+0x34): undefined reference to `GetStockObject@4'
collect2.exe: error: ld returned 1 exit status

Нужно указать (с помощью опции -l) библиотеку, в которой линковщику надлежит искать означенную функцию.

P.S. Ну и если уж установили MinGW, то используйте его оболочку с правильно инициализированным окружением, а не cmd.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Ответить