Моя ОС — 64-битная Windows 7.
Я хотел построить образец DirectX в
C: \ Program Files (x86) \ Microsoft DirectX SDK (июнь 2010 г.) \ Samples \ C ++ \ Direct3D10 \ Tutorials \ Tutorial02.
но при сборке произошла ошибка с фатальной ошибкой
LNK1104: «winmm.lib» не может открыть файл.
Я переустановил Direct SDK, но без изменений. Я также добавил путь (include, lib) к настройкам.
Если я удаляю «winmm.lib» из настроек проекта, «comctl32.lib» не может быть открыт.
обе библиотеки уже присутствовали в свойствах> Linker> Input.
Как я могу решить эту проблему?
winmm.lib
не является частью DirectX SDK, но является частью Windows SDK.
Последние версии Windows SDK также были сильно реорганизованы, но в них включена библиотека, которую вы ищете.
Просто поместите строку ниже в stdafx.h
#pragma comment(lib, "winmm.lib")
Если вы пытаетесь создать какой-либо из устаревших образцов DirectX SDK с VS 2012 или VS 2013, вам нужно изменить пути include / libs в соответствии с инструкциями внизу страницы на MSDN. Наиболее важным изменением является то, что вы должны изменить порядок пути Include / Lib:
Для VS 2010 это было:
$(DXSDK_DIR)Include;$(IncludePath)
$(DXSDK_DIR)Lib\x86;$(LibraryPath)
или же $(DXSDK_DIR)Lib\x64;$(LibraryPath)
Для VS 2012/2013 это должно быть:
$(IncludePath);$(DXSDK_DIR)Include
$(LibraryPath);$(DXSDK_DIR)Lib\x86
или же $(LibraryPath);$(DXSDK_DIR)Lib\x64
Конечно, лучше не тратить время на изучение старого Direct3D 10 API, а использовать новейшие Direct3D 11 Win32 настольные учебники на Галерея кодов MSDN. На самом деле, я разместил там много старых образцов DirectX SDK, поэтому они отлично работают с VS 2012/2013 Express для Windows Desktop и VS 2012/2013 Pro + как есть, без DirectX SDK вообще.
Прочитайте эти сообщения в блоге:
Каталог инструментов DirectX SDK
DirectX SDK определенного возраста
И рассмотрите эти проекты CodePlex: