Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Запускается в одном компиляторе и не работает в другом

548
27 сентября 2007 года
Maximillian_Cavalera
157 / / 16.08.2007
Купил книгу "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")
Студия не находит файла.
12K
28 сентября 2007 года
__AleXX__
133 / / 02.04.2007
... а код кинуть было сложно, или хотя б ошибки поточнее,
мы те чё? телепаты что-ль?

Мало ли что за фигню ты где выдрал и решил скомпилить.

И что, едить, означает твоя тема???
252
28 сентября 2007 года
koderAlex
1.4K / / 07.09.2005
примеры в книгах описывают конкретную реализацию для определённых инструментов и не больше . если используеш другие инструменты , то пример надо адаптировать .
8.9K
28 сентября 2007 года
Kulti
77 / / 29.07.2006
Цитата: Maximillian_Cavalera

#pragma comment(lib, "d3d9.lib")
Студия не находит файла.


Дык пути к либам надо добавить!

370
28 сентября 2007 года
koval
443 / / 29.08.2005
Цитата: 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")
Студия не находит файла.



Еще давно при царе горохе, когда я писал используя ДиректХ в 6 Студии, надо было добавлять либы статично в проект такие как DDRAW.LIB DSOUND.LIB и др. Думаю что и в 8 студии ничего не изменилось. Попробуй может поможет.

548
28 сентября 2007 года
Maximillian_Cavalera
157 / / 16.08.2007
Вот исходник из книги

//---------------------------------------------------------------------------------------
// 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);

}
548
28 сентября 2007 года
Maximillian_Cavalera
157 / / 16.08.2007
Цитата: koval
Еще давно при царе горохе, когда я писал используя ДиректХ в 6 Студии, надо было добавлять либы статично в проект такие как DDRAW.LIB DSOUND.LIB и др. Думаю что и в 8 студии ничего не изменилось. Попробуй может поможет.


А как их подключить статично?

548
28 сентября 2007 года
Maximillian_Cavalera
157 / / 16.08.2007
Ещё забыл сказать: в книге написано, что после установки ДиректХ в самой Студии при создании нового проекта к стандартным мастерам добавится ещё один - DirectX 9 Visual C++ Wizard. Я его нигде не нашёл.
370
28 сентября 2007 года
koval
443 / / 29.08.2005
Товарищ у тебя проблемы не с Либами. А разберать плохо оформленный код как-то лень. Могу посоветовать, для создания окна воспользоваться мастером 8-ой студии - он сгенерирут тебе похожий код, который будет на 100% рабочий.
31K
29 сентября 2007 года
jkmuf
6 / / 22.09.2007
Насколько я понимаю, это код на WIN32.
Для того, чтобы подключить 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 и там поменять имя класс на твоё

Жела удачи.
548
29 сентября 2007 года
Maximillian_Cavalera
157 / / 16.08.2007
А как подключить библиотеку?
Я пробовал прописывать полный путь к библиотеке d3d9.lib, но Студия всё равно не находит её. Так же пробовал помещать в проект и d3d9.h - та же история.
548
29 сентября 2007 года
Maximillian_Cavalera
157 / / 16.08.2007
Люди, извините, что вводил вас в заблуждение своими вопросами. Я уже разобрался в том, что я спрашивал. Сейчас изучил повнимательней, что написано в книге, посмотрел другие примеры и пришёл к выводу: в этой книге млять стлько опечаток, что нужно поотрывать руки, тому кто её печатал. Причём опечатки в исходниках. Потратил часа два, пока немного разобрался с первым примером, хотя ещё не запускается полностью готовая программа с первого примера.
63
06 октября 2007 года
Zorkus
2.6K / / 04.11.2006
А хочешь простой совет?
Забудь про программирование графики, и займись плотно базовыми вещами. Изучи хорошо сам язык, алгоритмику, поработай в консоли. Освой среду, работу с ресурсами, работу с Dll, программирование под Windows (например, по книжке Рихтера, "Создание эффективных 32-разрядных приложений"). И только ПОТОМ разбирайся с графикой.
Тебе самому будет проще так.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог