ПрограммированиеФорумГрафика

Directx SDK. Cannot find -ld3dx9

#0
7:06, 27 янв 2020

Пытаюсь разобраться в особеностях 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?
Просьба помочь разобраться.

#1
7:27, 27 янв 2020

Kukuruz
какой у тебя набор символов в проекте стоит ?
Если ты только начал подкатывать к dx и с++ советую сразу и на visual studio перейти.

#2
7:28, 27 янв 2020

Компилятор какой? Тот, который идёт вместе с codeblocks?

#3
7:31, 27 янв 2020

В папке lib есть эта библиотека?

#4
7:33, 27 янв 2020

vindast
> советую сразу и на visual studio перейти.
todo: сегодня vs, завтра родину продать

#5
7:43, 27 янв 2020

У тебя dx sdk.
Он тебе не нужен, потому что у mingw есть свои dx библиотеки, а те, которые ты хочешь использовать не пригодны для использования.

#6
8:02, 27 янв 2020

Vindast
VS которая експресс? Или та которая обычная MVS? Она вроде платная я ей особо не интересовался из-за этого. Вообще знакомые советовали изучать студию, но она мне кажется громоздкой.

Кодировка стоит Windows-1251, но это не в в настройках проекта, а в settings самой проги. Где там оно в проекте я хз.

programina
Компилятор тот который при установке. В папке lib нету, ничего туда не сувал. Подключал библиотеки DirectX в проект через мастер.

#7
8:22, 27 янв 2020

Kukuruz
скачай mingw w64, он во-первых, 64 битный, во-вторых, поддерживает directx. Я на нем пробовала даже 11-й dx и все работало.

PS: а ещё лучше взять opengl.

#8
9:16, 27 янв 2020

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 которая експресс?
Которая комьюнити. Она бесплатная, но надо зарегаться.

#9
10:02, 27 янв 2020

Kukuruz
не нужен тебе D3DX, загрузка текстур, математика, все можно написать самому, для шейдеров достаточно только D3DXGetShaderConstantTable, компилить вообще можно D3DCompile, которая вообще не в  не в D3DX, а если уж нужно, то грузи динамическинужные функции.

#10
14:17, 27 янв 2020

Всем спасибо :).

ПрограммированиеФорумГрафика

Тема в архиве.