Я использую Windows 8 / Visual Studio 2012, C ++ 11 и Direct3D 11 для разработки.
Я включаю библиотеки Direct3D, как это
#pragma comment(lib, "dxgi.lib")
#pragma comment(lib, "d3d11.lib")
#pragma comment(lib, "d3dx11.lib") // <-- error LNK1104: cannot open file 'd3dx11.lib'
#pragma comment(lib, "d3dx10.lib")
Тем не менее, компоновщик не может найти d3dx11.lib. После добавления пути, в котором находится библиотека, к «Каталогам библиотек» проекта, компоновщик все еще не может найти эти файлы. Даже после того, как я скопировал файлы lib в сам каталог проекта, он не работает.
Я установил Windows 8 SDK, а также DirectX SDK с июня 2010 года. Я что-то упустил?
Разбираясь с этим сам, я начал здесь:
затем — примерно в середине этой страницы, читая о DirectXMath:
Это просто включение правильных заголовочных файлов и изменение префиксов «D3DX» на «XM». Не все так просто, но это общая идея.
Ваша первая программа, вероятно, будет иметь следующие включения / использования:
#include <d3d11.h>
#include “DirectXMath.h”
#include “DirectXPackedVector.h”
using namespace DirectX;
using namespace DirectX::PackedVector;
struct mystruct
{
DirectX::XMFLOAT3 position;
DirectX::PackedVector::HALF packedValue;
};
Конечно, не считается лучшей практикой иметь «использование пространства имен», но в этом одном случае я обнаружил, что «DirectX ::» в каждой строке моей программы делал мою программу почти невозможной для чтения (для меня), поэтому я пошел с «использованием».
Удачи!
Возможно, вы указали неверный путь в свойствах, вместо «* DirectxSDK / Lib / x86» вы включили «* DirectxSDK / Lib».
Я тоже столкнулся с этой проблемой, используя VS2010, но я только нашел решение. Вам необходимо предоставить компоновщику файл библиотеки, с которым у вас возникли проблемы.
Проект-> Свойства-> Свойства конфигурации->Linker-> Дополнительные каталоги библиотек
Затем добавьте туда файл библиотеки, который вы хотите. Работал для меня, надеюсь, работает и для вас, и тогда вам не придется связываться с DirectXMath и находить новые учебники для него.