{{notification.text}}

MirGames

FrozenKing
05.04.11 01:02
0
Привет! При компиляции в Visual C++ 2008 у меня возникает такая ошибка:
MSVCRTD.lib(crtexew.obj) : error LNK2019: unresolved external symbol _WinMain@16 referenced in function ___tmainCRTStartup

Вот код:
Код

#include "stdafx.h"
#include "sds.h"
#include <windows.h>
#include "d3d9.h"
#include <d3dx9.h>
#pragma comment (lib, "d3d9.lib")
#pragma comment (lib, "d3dx9.lib")


LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);

    IDirect3D9* d3d9 = NULL;
    IDirect3DDevice9* dev = NULL;

    HWND hwnd;            
       MSG messages;          
       WNDCLASSEX wincl;

int WINAPI WinMain (HINSTANCE hInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpszArgument,
                    int nFunsterStil)
{
    wincl.cbSize        = sizeof (WNDCLASSEX);
    wincl.hInstance     = hInstance;
    wincl.lpszClassName = L"Game";
    wincl.lpfnWndProc   = WindowProcedure;      
    wincl.style         = CS_DBLCLKS;                
    
    wincl.hIcon   = LoadIcon (NULL, IDI_WINLOGO);
    wincl.hIconSm = LoadIcon (NULL, IDI_WINLOGO);
    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
    wincl.lpszMenuName = NULL;                
    wincl.cbClsExtra = 0;                    
    wincl.cbWndExtra = 0;                    

    wincl.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);

    if (!RegisterClassEx (&wincl))
        return 0;

    hwnd = CreateWindowEx (
           0,                  
           L"Game",        
           L"Game",      
           WS_OVERLAPPEDWINDOW,
           CW_USEDEFAULT,      
           CW_USEDEFAULT,    
           544,                
           375,                
           HWND_DESKTOP,      
           NULL,                
           hInstance,      
           NULL                
           );

    ShowWindow (hwnd, nFunsterStil);

    d3d9 = Direct3DCreate9(D3D_SDK_VERSION);

    D3DPRESENT_PARAMETERS pp;
    ZeroMemory(&pp,sizeof(pp));

    pp.BackBufferWidth = 500;
    pp.BackBufferHeight = 500;
    pp.BackBufferFormat = D3DFMT_X8R8G8B8;
    pp.BackBufferCount = 1;
    pp.SwapEffect = D3DSWAPEFFECT_DISCARD;
    pp.hDeviceWindow = hwnd;
    pp.Windowed = true;
    
    
    d3d9->CreateDevice(D3DADAPTER_DEFAULT,
                    D3DDEVTYPE_REF,hwnd,
                    D3DCREATE_SOFTWARE_VERTEXPROCESSING,
                    &pp, &dev);

    while (GetMessage (&messages, NULL, 0, 0))
    {
        TranslateMessage(&messages);
        DispatchMessage(&messages);

        dev->Clear(0,NULL,D3DCLEAR_TARGET,
        D3DCOLOR_XRGB(255,255,255),1.0f,0);

        dev->BeginScene();
        dev->EndScene();

        dev->Present(NULL,NULL,NULL,NULL);
    }

      if (dev != NULL)
         dev->Release();
      if (d3d9 != NULL)
         d3d9->Release();

    return messages.wParam;
}

LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    HDC hdc;
    PAINTSTRUCT ps;
    
    switch (message)                
    {
        case WM_DESTROY:
            PostQuitMessage (0);      
            break;
            
        case WM_CREATE:
            return 0;
            break;
            
        case WM_PAINT:
             {
               hdc = BeginPaint(hwnd, &ps);
               EndPaint(hwnd, &ps);
               return 0;
             } break;  
        default:                      
            return DefWindowProc (hwnd, message, wParam, lParam);
    }
    return 0;
}


Конечно, перед тем как писать сюда зашёл сначала в гугл, но так как уже от безысходности(уже перебрал туеву тучу вариаций подключаемых библиотека и перемещение кода в редакторе) решил всё-таки попросить помощи здесь. Как видите по коду я подключил
Код

#pragma comment (lib, "d3d9.lib")
#pragma comment (lib, "d3dx9.lib")

Код инициализации DirectX'а переносил как в отдельную функцию так и в внутри функции входа.
Подскажите, что делать?(
p.s. Пути к библиотеками и к *.H'кам я прописывал внутри компилятора, тоже не помогло(
#1
Программир Всия Руси!
05.04.11 11:59
0
FrozenKing
Любопытно.
Выложи весь проект.
#2
FrozenKing
05.04.11 19:29
0
Цитата

Любопытно.
Выложи весь проект.

Вот, прикрепил к посту.
Visual переустанавливал, в компиляторе не рылся, за исключением того, что поставил в
Create/Use Precompiled Header параметр Not Using Precompiled Headers.
#include "stdafx.h" - забыл удалить из кода в связи с изменениями в компиляторе, но это не так важно, ошибка всё равно осталась :(

Я сразу заметил, что компилятор себя, как-то не правильно ведёт, точнее не так как раньше, просто даже если взять вин апи приложение, то выводило ошибку, ругался на букву L перед
Код

wincl.lpszClassName = L"Game";

там написано было поменять параметр Character set в Multi-byte character set выводило вообще 10 ошибок: на скобки "{ }" или то что после LRESULT и CALLBACK не хватает ";"
Код

LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);

Пришлось отключить Precompiled Header, чего я делать не очень-то хотел, кстати, может по этой моей проблеме скажите что-нибудь?
Отредактировано: 05.04.11 19:41
#3
05.04.11 21:47
0
FrozenKing
добавь в проект sds.cpp и все слинкуется
#4
05.04.11 22:09
0
Как-то так:
#5
FrozenKing
05.04.11 22:59
0
Цитата(Android @ 5.04.2011 - 13:47) [snapback]107291[/snapback]

FrozenKing
добавь в проект sds.cpp и все слинкуется

sds.cpp это главный файл в котором я и пишу код, если бы я не добавил бы его к проекту - то его бы и не было =). Или я вас так не понял?
Adler
Всё равно не работает((

Linking...
main.obj : error LNK2019: unresolved external symbol _Direct3DCreate9@4 referenced in function _WinMain@16
D:\Load FireFox\InitD3D\InitD3D\Debug\sds.exe : fatal error LNK1120: 1 unresolved externals
Build log was saved at "file://d:\Load FireFox\InitD3D\InitD3D\sds\Debug\BuildLog.htm"
sds - 2 error(s), 0 warning(s)

Попробую проверить на ноуте, там тоже визуал...
Отредактировано: 05.04.11 23:06
#6
05.04.11 23:29
0
FrozenKing
Цитата
sds.cpp это главный файл в котором я и пишу код, если бы я не добавил бы его к проекту - то его бы и не было =). Или я вас так не понял?

когда я открыл проект файла sds.cpp не было и при компиляции вылезала ошибка:
MSVCRTD.lib(crtexew.obj) : error LNK2019: ссылка на неразрешенный внешний символ _WinMain@16 в функции ___tmainCRTStartup
а после подключения файла к проекту компилилось без ошибок, только я инициализация директа закоментил а то хедеров для него небыло.

#7
06.04.11 01:41
0
FrozenKing
Похоже у тебя криво установлен DX SDK.
Скачай отсюда и переустанови.

зы: У тебя какая-то не правильная версия d3d9.lib.

UPD: Прикрепил вариант с лимбами от моего DX SDK.
Отредактировано: 06.04.11 03:22
#8
FrozenKing
06.04.11 18:41
0
Цитата(Adler @ 5.04.2011 - 17:41) [snapback]107301[/snapback]

FrozenKing
Похоже у тебя криво установлен DX SDK.
Скачай отсюда и переустанови.

зы: У тебя какая-то не правильная версия d3d9.lib.

UPD: Прикрепил вариант с лимбами от моего DX SDK.

Спасибо! =) Всё, заработало, скачал новый сдк, но тот что у меня был я его качал дня 4 назад он был за 2010 год и весил на 100 мб больше... спс!
#{{post.Index}}
{{post.Author.Login}}
{{post.CreatedDate | date:'dd.MM.yy HH:mm'}}
{{post.VotesRating}}
Отредактировано: {{post.UpdatedDate | date:'dd.MM.yy HH:mm'}}