Qual é a diferença entre os arquivos de biblioteca x64 e x86 em DirectX?
-
19-09-2019 - |
Pergunta
Recentemente eu tenho Visual Studio em um novo computador, e para configurar DirectX sobre ele, eu fui para Ferramentas> Opções> Projetos e Soluções> Diretórios VC ++ e em arquivos de biblioteca feita uma nova entrada C:\Program Files\Microsoft DirectX SDK (August 2009)\Lib\x86
e agora correu um programa de teste (essencialmente apenas inicializado DirectX) e funcionou muito bem. No entanto, se eu mudar ...\Lib\x86
para ...\Lib\x64
, do que eu recebo um erro de vinculador que Direct3DCreate9
é indefinido:
1>main.obj : error LNK2019: unresolved external symbol _Direct3DCreate9@4 referenced in function "void __cdecl init(void)" (?init@@YAXXZ)
Solução
As bibliotecas são x86 para aplicações de 32 bits, e as bibliotecas x64 são para aplicações de 64 bits.
Você pode ver qual plataforma você está direcionando no Configuration Manager do Visual Studio. A menos que você tenha uma boa razão, você deve estar escrevendo aplicativos de 32 bits, uma vez que aplicativos de 64 bits requer a versão de 64 bits do Windows para ser executado.
Outras dicas
A pasta x64
contém os arquivos de biblioteca para a plataforma AMD64 (Windows de 64 bits). Você precisa compilar o seu pedido de 64 bits, também. Além disso, você precisará da versão do Windows de 64 bits para executar o produzido executável.
Bem, a resposta simples é que as bibliotecas x86 são para sistemas operacionais de 32 bits e as bibliotecas x64 são para sistemas operacionais de 64 bits.
Simplesmente mudar a biblioteca DirectX ligada à produzirá um erro como você é (com toda a probabilidade) tentando ligar seu código de 32 bits para a biblioteca de 64 bits. Você vai precisar de compilar o código para direcionar sistemas de 64 bits operando de chegar a este vínculo com sucesso.