Запускается в одном компиляторе и не работает в другом
-Visual C++.Net
-DirectX 9 SDK
У меня стоит VS 2005. Я набирал код написанный в книге дословно, но у меня выдавало ошибку в некоторых местах. Кстати, в книге для создания нового проекта нужно в поле Project Type выбрать Visual C++ Projects, а в поле Templates - Win32 project. Далее в диалоговом окне выбрать Пустое приложение, добавить cpp-файл.
Так вот, в местах там где описывается класс окна и происходит создание окна компилятор выдаёт ошибку, нельзя привести к такому типу. Посмотрел как Вин 32 с готовым кодом формы выглядит и после этого в некоторых местах подправил свой код (перепсанный с книги) - всё равно не запускается. При открытии решения с диска, который шёл к книге, Студия предлагает сконвертировать проект. Соглашаюсь, нажимаю F5 - опять не запускается.
Ещё вот, что: создал в Bloodshed Dev-C++ проект с формой - исходник почти слово в слово как в книге и нормально запускается. Сохранил этот файл и открыл его через студию. Нажимаю F5 - выдаёт ошибку.
Установил DirectX 9 SDK (october 2005). Далее сделал всё как написано в книге
#pragma comment(lib, "d3d9.lib")
Студия не находит файла.
мы те чё? телепаты что-ль?
Мало ли что за фигню ты где выдрал и решил скомпилить.
И что, едить, означает твоя тема???
примеры в книгах описывают конкретную реализацию для определённых инструментов и не больше . если используеш другие инструменты , то пример надо адаптировать .
Цитата: Maximillian_Cavalera
#pragma comment(lib, "d3d9.lib")
Студия не находит файла.
Дык пути к либам надо добавить!
Цитата: Maximillian_Cavalera
Купил книгу "DirextX 9 уроки программирования на C++". В книге написано, что для неё нужно:
-Visual C++.Net
-DirectX 9 SDK
У меня стоит VS 2005. Я набирал код написанный в книге дословно, но у меня выдавало ошибку в некоторых местах. Кстати, в книге для создания нового проекта нужно в поле Project Type выбрать Visual C++ Projects, а в поле Templates - Win32 project. Далее в диалоговом окне выбрать Пустое приложение, добавить cpp-файл.
Так вот, в местах там где описывается класс окна и происходит создание окна компилятор выдаёт ошибку, нельзя привести к такому типу. Посмотрел как Вин 32 с готовым кодом формы выглядит и после этого в некоторых местах подправил свой код (перепсанный с книги) - всё равно не запускается. При открытии решения с диска, который шёл к книге, Студия предлагает сконвертировать проект. Соглашаюсь, нажимаю F5 - опять не запускается.
Ещё вот, что: создал в Bloodshed Dev-C++ проект с формой - исходник почти слово в слово как в книге и нормально запускается. Сохранил этот файл и открыл его через студию. Нажимаю F5 - выдаёт ошибку.
Установил DirectX 9 SDK (october 2005). Далее сделал всё как написано в книге
#pragma comment(lib, "d3d9.lib")
Студия не находит файла.
-Visual C++.Net
-DirectX 9 SDK
У меня стоит VS 2005. Я набирал код написанный в книге дословно, но у меня выдавало ошибку в некоторых местах. Кстати, в книге для создания нового проекта нужно в поле Project Type выбрать Visual C++ Projects, а в поле Templates - Win32 project. Далее в диалоговом окне выбрать Пустое приложение, добавить cpp-файл.
Так вот, в местах там где описывается класс окна и происходит создание окна компилятор выдаёт ошибку, нельзя привести к такому типу. Посмотрел как Вин 32 с готовым кодом формы выглядит и после этого в некоторых местах подправил свой код (перепсанный с книги) - всё равно не запускается. При открытии решения с диска, который шёл к книге, Студия предлагает сконвертировать проект. Соглашаюсь, нажимаю F5 - опять не запускается.
Ещё вот, что: создал в Bloodshed Dev-C++ проект с формой - исходник почти слово в слово как в книге и нормально запускается. Сохранил этот файл и открыл его через студию. Нажимаю F5 - выдаёт ошибку.
Установил DirectX 9 SDK (october 2005). Далее сделал всё как написано в книге
#pragma comment(lib, "d3d9.lib")
Студия не находит файла.
Еще давно при царе горохе, когда я писал используя ДиректХ в 6 Студии, надо было добавлять либы статично в проект такие как DDRAW.LIB DSOUND.LIB и др. Думаю что и в 8 студии ничего не изменилось. Попробуй может поможет.
//---------------------------------------------------------------------------------------
// WindowsBazis.CPP
// Данное приложенние создает простейшее окно
//---------------------------------------------------------------------------------------
#include <windows.h> // Подключаем заголовочный файл Windows
#include "resource.h" [COLOR="Red"]Здесь он не хочет находить этот файл, как ни крути и про него в книге ничего не сказано.[/COLOR]
//----------------------------------------------------------------------------------------
// Функция
// MainWinProc()
// Здесь происходит обработка сообщенний
//----------------------------------------------------------------------------------------
LRESULT CALLBACK MainWinProc(HWND hwnd, //Дескриптор окна
UINT msg, //идентефикатор сообщение
WPARAM wparam, //Дополнительная информация
LPARAM lparam) //Дополнительная информация
{
switch(msg)
{
case WM_PAINT:
break;
case WM_DESTROY:
{
PostQuitMessage(0);
return(0);
} break;
}
return (DefWindowProc(hwnd, msg, wparam, lparam));
}
//---------------------------------------------------------------------------------------
// Функция
// WinMain()
// Входная точка приложения
//---------------------------------------------------------------------------------------
int WINAPI WinMain( HINSTANCE hinstance,
HINSTANCE hprevinstance,
LPSTR lpcmdline,
int ncmdshow)
{
WNDCLASSEX windowsclass; // Создем класс
HWND hwnd; // Создаем дескриптор окна
MSG msg; // Сообщение
// Определим класс окна WNDCLASSEX
windowsclass.cbSize = sizeof(WNDCLASSEX);
windowsclass.style = CS_DBLCLKS | CS_OWNDC |
CS_HREDRAW | CS_VREDRAW;
windowsclass.lpfnWndProc = MainWinProc;
windowsclass.cbClsExtra = 0;[COLOR="Red"][/COLOR]
windowsclass.cbWndExtra = 0;
windowsclass.hInstance = hinstance;
windowsclass.hIcon = LoadIcon(hinstance, IDI_ICON1);[COLOR="#ff0000"] Здесь он пишет вот, что "Error 1 error C2065: 'IDI_ICON1' : undeclared identifier c:\documents and settings\administrator\my documents\examples\urok1\windowsbazis.cpp 63"
[/COLOR]
windowsclass.hCursor = LoadCursor(NULL, IDC_ARROW);
windowsclass.hbrBackground = (HBRUSH)GetStockObject(GRAY_BRUSH);
windowsclass.lpszMenuName = NULL;
windowsclass.lpszClassName = "WINDOWSCLASS";[COLOR="#ff0000"] Здесь выдавал ошибку cannot convert char to ...[/COLOR]
windowsclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
// Зарегестрируем класс
if (!RegisterClassEx(&windowsclass))
return(0);
// Теперь когда класс зарегестрирован можно создать окно
if (!(hwnd = CreateWindowEx(NULL, // стиль окна
"WINDOWSCLASS", [COLOR="#ff0000"] Здесь то же что и в предыдущем коментарии красного цвета[/COLOR] // класс
"Урок 1. Базовое Окно для DirectX ", // название окна
WS_OVERLAPPEDWINDOW | WS_VISIBLE,
300,150, // левый верхний угол
500,400, // ширина и высота
NULL, // дескриптор родительского окна
NULL, // дескриптор меню
hinstance, // дескриптор экземпляра проложенния
NULL))) // указатель на данные созданного окна
return(0);
ShowWindow( hwnd, SW_SHOWDEFAULT ); //Нарисуем окно
UpdateWindow( hwnd ); //Обновим окно
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return(msg.wParam);
}
Цитата: koval
Еще давно при царе горохе, когда я писал используя ДиректХ в 6 Студии, надо было добавлять либы статично в проект такие как DDRAW.LIB DSOUND.LIB и др. Думаю что и в 8 студии ничего не изменилось. Попробуй может поможет.
А как их подключить статично?
Ещё забыл сказать: в книге написано, что после установки ДиректХ в самой Студии при создании нового проекта к стандартным мастерам добавится ещё один - DirectX 9 Visual C++ Wizard. Я его нигде не нашёл.
Товарищ у тебя проблемы не с Либами. А разберать плохо оформленный код как-то лень. Могу посоветовать, для создания окна воспользоваться мастером 8-ой студии - он сгенерирут тебе похожий код, который будет на 100% рабочий.
Для того, чтобы подключить resource.h нужно его создать. Это или меню или окно или картинка.
Кстати, как делать resource зависит от VS.
Итак:
1) #include "resource.h" Здесь он не хочет находить этот файл, как ни крути и про него в книге ничего не сказано.
СОЗДАЙ САМ resource.h
2)windowsclass.hIcon = LoadIcon(hinstance, IDI_ICON1); Здесь он пишет вот, что "Error 1 error C2065: 'IDI_ICON1' : undeclared identifier c:\documents and settings\administrator\my documents\examples\urok1\windowsbazis.cpp 63"
НУЖНО СДЕЛАТЬ САМОМУ ИКОНКУ 'IDI_ICON1'
3)windowsclass.lpszClassName = "WINDOWSCLASS"; Здесь выдавал ошибку cannot convert char to
НУЖНО ЗАЙТИ В код resource и там поменять имя класс на твоё
Жела удачи.
Я пробовал прописывать полный путь к библиотеке d3d9.lib, но Студия всё равно не находит её. Так же пробовал помещать в проект и d3d9.h - та же история.
Люди, извините, что вводил вас в заблуждение своими вопросами. Я уже разобрался в том, что я спрашивал. Сейчас изучил повнимательней, что написано в книге, посмотрел другие примеры и пришёл к выводу: в этой книге млять стлько опечаток, что нужно поотрывать руки, тому кто её печатал. Причём опечатки в исходниках. Потратил часа два, пока немного разобрался с первым примером, хотя ещё не запускается полностью готовая программа с первого примера.
Забудь про программирование графики, и займись плотно базовыми вещами. Изучи хорошо сам язык, алгоритмику, поработай в консоли. Освой среду, работу с ресурсами, работу с Dll, программирование под Windows (например, по книжке Рихтера, "Создание эффективных 32-разрядных приложений"). И только ПОТОМ разбирайся с графикой.
Тебе самому будет проще так.