Por Linhas Tortas

O mundo sob os olhos de uma pessoa comum

Eclipse + DirectX + MinGW

leave a comment »

Como todo bom programador (não que eu seja de fato bom, mas eu tento), sempre separo uns minutos (ou horas) de meu tempo livre para aprender algo novo ou praticar de alguma forma minhas habilidades de programação.

Sendo assim eu resolvi me aventurar no mundo da computação gráfica (bem conhecido como CG). Primeiro tive de escolher entre os dois grandes pacotes com bilbiotecas e funções básicas para lidarmos com CG, o OpenGL e o Direct3D. O OpenGL é aberto e muito usado em muitos programas conhecidos, aplicativos para iPhone por exemplo, já o Direct3D é de propriedade da Microsoft e como tal só é usado em seus sistemas, principalmente Windows (que também suporta OpenGL) e Xbox.

Eu utilizei um pouco de OpenGL na faculdade, então tenho alguma familiaridade com ele, mas devido a algumas más experiências resolvi seguir com o Direct3D, usando como linguagem C++, que é bastante flexível e possui as vantagens de ser orientada a objeto.

O ambiente de C++ eu já tinha montado no meu computador, Eclipse C++ Galileo com MinGW, eu escolhi o eclipse, pois é a ferramenta que eu mais tenho contato e já conheço bem seus atalhos e opções, o MinGW é um pacote muito usado que possui as bilbiotecas mais básicas e compiladores para C/C++.

Em seguida eu baixei o kit SDK (kit de desenvolvimento) do DirectX, um pacotão com bibliotecas, exemplos e documentação da “linha Direct” (Direct3D, DirectSound e etc.), que pode ser baixado gratuitamente no site da Microsoft. Embora tenha baixado o SDK mais novo, optei por usar no meu programa o DirectX 9.

Após instalar tudo e montar o ambiente pus a mão na massa.

Segui o passo a passo de como criar uma janela simples, mas o código não compilava. O eclipse não conseguia encontrar referências a alguns métodos como D3DXMatrixPerspectiveFovLH e Direct3DCreate9 que podem ser encontrados nas bibliotecas d3d9.h e d3dx9.h, ambas corretamente incluidas no meu programa através do uso da diretiva #include e, em teoria, referenciadas com a diretiva #pragma comment, que por alguma razão estava sendo ignorada.

Depois de muito pesquisar na internet (santo google), eu percebi que muita gente possuia uma problema semelhante, mas nenhum discutia a questão com o eclipse, já que o pessoal usa amis o Bloodshed Dev-C++ (também um bom IDE, eu usei por um tempo, mas prefiro eclipse), após muito ler já estava chegando a conclusão que a melhor opção seria baixar o Visual C++ Express da Microsoft (software gratuito), pois ele identifica o DirectX SDK e já o inclui em seu Linker. Mas perai, então o problema é Linker? Sabendo o problema é possível resolvê-lo, essa é a principal intenção desse post, já que pode ser que haja outras pessoas que também passaram por esse problema.

Para resolver essa questão do Linker, precisei de um bom tempo (e muita raiva também), mas no final a solução foi até que bem fácil. Para resolver isso basta clicar com o botão direito no projeto > Properties > C/C++ Build > Settings > Tool Settings

Aqui você verá várias opções, clique em MinGW C++ Linker > Libraries.
No canto direito há dois campos, o que você irá preencher aqui depende de seu ambiente, se você usa o d3d9 somente, basta adicionar no campo de cima a biblioteca libd3d9 que vem com o MinGW, caso você use também o d3dx9, então no campo de baixo acrescente o caminho para as bibliotecas do DirectX SDK, no meu computador ficou: C:\Microsoft DirectX SDK (June 2010)\Lib\x86 e no campo de cima ponha d3dx9 e d3d9, que são rechecidas pelo SDK (pode por libd3d9 ao invés de d3d9, nesse caso a lib será reconhecida pelo MinGW).

Além disso, se você usa o d3dx9 vá para GCC C++ Compiler > Directories.
No campo que aparece a direita, ponha a pasta Includes do SDK, aqui ficou C:\Microsoft DirectX SDK (June 2010)\Include.

Feito isso o código irá compilar normalmente, caso o restante esteja correto. Se você ainda estiver ,pode remover a diretiva #pragma comment sem problema algum.

É isso, qualquer dúvida ou opinião sobre essa dica é só falar.

Written by Silvano

13/06/2010 às 2:43 pm

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: