У меня есть приложение Xamarin Forms, написанное на C # и использующее DirectX Tool Kit с вызовами взаимодействия с C ++.
Это приложение для Windows 8.1, оно отлично работает на Windows 8.1 и работает на моем компьютере с Windows 10.
Но однажды я запустил Visual Studio 2015 и собирался запустить приложение на Windows 10. Оно просто вылетало из ниоткуда. Я думаю, что обновление Windows 10 может быть проблемой?
В любом случае вот код из DirectX Tool Kit для Windows8.1:
ThrowIfFailed(
D3D11CreateDevice(
nullptr, // Specify null to use the default adapter.
D3D_DRIVER_TYPE_HARDWARE,
0,
creationFlags, // Optionally set debug and Direct2D compatibility flags.
featureLevels, // List of feature levels this app can support.
ARRAYSIZE(featureLevels),
D3D11_SDK_VERSION, // Always set this to D3D11_SDK_VERSION for Windows Store apps.
&device, // Returns the Direct3D device created.
NULL, // Returns feature level of device created.
&context // Returns the device immediate context.
)
);
// Get D3D11.1 device
ThrowIfFailed(
device.As(&m_d3dDevice)
);
D3D11CreateDevice, кажется, возвращает нуль (устройство и контекст)
И вылет в устройстве. Как (&m_d3dDevice) и сообщение об ошибке говорит о том, что какой-то компонент SDK может отсутствовать.
Кто-нибудь, кто знает, в чем может быть проблема? Должен ли я установить DirectX SDK? Почему я мог запустить приложение раньше?
Спасибо!
Из DirectX TK:
http://directxtk.codeplex.com/workitem/1317
Это связано с тем, что ваши creationFlags имеют вид D3D11_CREATE_DEVICE_DEBUG, что приведет к сбою, если у вас не установлено отладочное устройство Direct3D — это только на компьютерах разработчиков.
Поскольку вы работаете в Windows 10, вероятно, вы были обновлены с одной сборки на другую, что отключает отладочное устройство, поскольку оно устарело. Вы должны снова включить его.
Других решений пока нет …