Как собрать рефраст Windows D3D9 из исходного кода?

StackOverflow https://stackoverflow.com/questions/407905

  •  03-07-2019
  •  | 
  •  

Вопрос

Microsoft распространяет исходный код для справочных реализаций своих различных API-интерфейсов Direct3D среди поставщиков оборудования, разработчиков драйверов и т. д.Этот код собирается с использованием всегда загадочной системы сборки WDK (ранее DDK) и практически никогда не работает «из коробки».Несмотря на то, что этот код широко используется, он является получастным, поэтому в широкой сети никогда не бывает никакой базовой полезной информации.Это достаточно широко используется (и это хорошо известная боль в заднице в этом сообществе), а базовая информация о сборке достаточно нечувствительна, чтобы ее можно было обнаружить в Google.

В файле readme сборки предлагается использовать WDK и выполнить сборку с помощью команды build -cz -daytona.Это, как ни странно, выдает кучу выходных данных, но ничего не создает.

Преодолев это, Vista с WDK 6001.18002, последним исходным дистрибутивом d3def9, не работает в link подпроект с сообщением «не удалось вывести какие-либо выходные данные — предупреждение рассматривается как ошибка».

Сборка XP d3dref9.dll также может сбивать с толку, поскольку часто не удается найти заголовки и типы D3D.

Это было полезно?

Решение

Как правило, при создании исходных блоков рефрастирования возникают две основные проблемы, поскольку они поступают непосредственно от Microsoft.

Во-первых, build -cz -daytona Команда либо является опечаткой, либо основана на недокументированной дополнительной внешней конфигурации.При сборке в этом режиме анализируется весь исходный код, но никогда не указывается, какую платформу(ы) собирать.Поскольку все платформы dirs (daytona и win9x), где указаны фактические результаты, являются «необязательными», на самом деле ничего не создается.Решение этой проблемы состоит в том, чтобы вместо этого использовать правильно указанную команду build -cz daytona (нет '-' на daytona).Это должно проанализировать источники, а затем фактически строить все.

Помимо этого, обычно также возникают проблемы с настройкой готовой сборки.

Новые WDK (например.в Vista) обычно завершается сбоем на последнем этапе компоновки из-за ложной ошибки компоновщика.Это легко исправить, добавив:

LIBRARIAN_FLAGS = $(LIBRARIAN_FLAGS) /IGNORE:4001

к link/sources.inc файл сборки.После этого, build -cz daytona в корне дропа исходников надо собрать и слинковать всё из коробки.

В XP также часто возникают проблемы при использовании старых DDK (до Windows Server 2003, т.е.DDK с маркировкой «XP»).В частности, проект рефрастирования опирается на существующие внешние заголовки ядра D3D9, которые не включены в XP DDK.Эту проблему можно решить, просто используя последние версии WDK (переименованные из «DDK» после XP).Вопреки названию, все новые WDK, как правило, представляют собой расширенные версии старых выпусков и поэтому включают среды сборки для платформ начиная с XP.

Также могут возникнуть проблемы с некоторыми версиями перефразирования исходного кода XP, включая код, который вызывает более педантичные ошибки компилятора в новых версиях компилятора WDK.Однако их обычно можно легко исправить путем итеративной компиляции и настройки исходного кода в ответ на любые простые ошибки безопасности/корректности, возникающие в результате компилятора.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top