2014-01-03 8 views
0

Я скомпилировал программу DirectX с g ++ через командную строку, и она работала нормально. Когда я включил d3dx9.h, я получил слишком знакомое сообщение «нет такого файла или каталога». Как оказалось, линкер «не может найти -ld3dx9». Я проверил, и необходимые файлы находятся в их соответствующих каталогах. Файлы include и lib правильно помечены. Компилятор принимает флаг -ld3d9 как раз отлично, но, судя по всему, -ld3dx9 не летает. Я попробовал это в CodeBlocks, и произошло то же самое. Это сработало отлично, и денди для кого-то на YouTube. Я должен упустить что-то чрезвычайно очевидное.Как связать d3dx9?

Редактировать: Вот что я даю компилятору. Я на 64-битной ОС Windows 7.

g++ Wrap.cpp winmain.cpp -o test 
-IC:\ProgramFiles(x86)\MicrosoftDirectXSDK(June2010)\Include 
-LC:\ProgramFiles(x86)\MicrosoftDirectXSDK(June2010)\Lib\x64 
-ld3d9 -ld3dx9 -mwindows 

и вот включает в файле

#include <windows.h> 
#include <d3d9.h> 
#include <d3dx9.h> 
+0

Не линкер. Его компилятор жалуется на файл заголовка. Пожалуйста, добавьте свои каталоги include правильно. –

+0

@Digital_Reality Неясно, не найден ли файл d3dx9.h компилятором, или если d3dx9 lib не может быть найден компоновщиком. Или оба. Дополнительная информация о структуре каталогов, расположениях файлов, 'include' и флагов компилятора будет полезна. – LumpN

+0

какой toolchain вы использовали? mingw или mingw-w64? например, в mingw-w64, существует большая ревизия d3dx9, например libd3dx9_24.a libd3dx9_35.a, указанная, и она может работать –

ответ

1

Вы действительно есть каталог с именем ProgramFiles(x86)? Вы должны указать или избежать пробелов в команде. Например, что-то вроде этого может работать:

g++ ... "-IC:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Include"