Пытаюсь разобраться в особеностях DirectX-приложений. Пока пробую запустить пустые окна. Но вообще "глобальные" планы у меня запилить 3д-крестики-нолики с анимацией. Пишу в кодблоксе.
В коде регистрации класса окна перед "D3d Tutirial" в трех местах стояла буква L. И тогда выскакивали 3 ошибки типа
C:\2\main.cpp|84|error: cannot convert 'const wchar_t*' to 'LPCSTR {aka const char*}' in initialization
Вот тут:
WNDCLASSEX wc = { sizeof(WNDCLASSEX ), CS_CLASSDC, MsgProc, 0L, 0L, GetModuleHandle( NULL ), NULL, NULL, NULL, NULL, L"D3D Tutorial", NULL }; RegisterClassEx( &wc );
Как только я убрал эти 3 буквы L эти ошибки исчезли но появилась вот такая:
ld.exe||cannot find -ld3dx9|
и такая:
||error: ld returned 1 exit status|
В плюсах пока что разбираюсь не очень сильно, писал только консольные приложения поэтому что значит эти ошибки я не знаю. Вот я не знаю, стоило убирать эту букву L?
Просьба помочь разобраться.
Kukuruz
какой у тебя набор символов в проекте стоит ?
Если ты только начал подкатывать к dx и с++ советую сразу и на visual studio перейти.
Компилятор какой? Тот, который идёт вместе с codeblocks?
В папке lib есть эта библиотека?
vindast
> советую сразу и на visual studio перейти.
todo: сегодня vs, завтра родину продать
У тебя dx sdk.
Он тебе не нужен, потому что у mingw есть свои dx библиотеки, а те, которые ты хочешь использовать не пригодны для использования.
Vindast
VS которая експресс? Или та которая обычная MVS? Она вроде платная я ей особо не интересовался из-за этого. Вообще знакомые советовали изучать студию, но она мне кажется громоздкой.
Кодировка стоит Windows-1251, но это не в в настройках проекта, а в settings самой проги. Где там оно в проекте я хз.
programina
Компилятор тот который при установке. В папке lib нету, ничего туда не сувал. Подключал библиотеки DirectX в проект через мастер.
Kukuruz
скачай mingw w64, он во-первых, 64 битный, во-вторых, поддерживает directx. Я на нем пробовала даже 11-й dx и все работало.
PS: а ещё лучше взять opengl.
Kukuruz
> Вот я не знаю, стоило убирать эту букву L?
Если только английский текст в коде, то без разницы. L перед текстом в кавычках сохраняет строку в юникоде.
https://docs.microsoft.com/en-us/cpp/cpp/string-and-character-lit… ?view=vs-2019
В Visual Studio у проекта есть настройка в опциях, которая позволяет включить строки в винапи в юникоде (Use unicode character set). Тот туториал, откуда ты взял код, скорее всего, собирался с этой настройкой.
> cannot find -ld3dx9
Не может найти d3dx9.lib. Если у тебя её нет, то надо взять из старых DirectX SDK. Но вообще, эта либа уже депрекейтед, в DirectX 11 вместо неё используется DirectXMath и прочие (они лежат на гитхабе).
Kukuruz
> VS которая експресс?
Которая комьюнити. Она бесплатная, но надо зарегаться.
Kukuruz
не нужен тебе D3DX, загрузка текстур, математика, все можно написать самому, для шейдеров достаточно только D3DXGetShaderConstantTable, компилить вообще можно D3DCompile, которая вообще не в не в D3DX, а если уж нужно, то грузи динамическинужные функции.
Всем спасибо :).
Тема в архиве.