Как построить Windows D3D9 рефраст из источника? - PullRequest
3 голосов
/ 02 января 2009

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

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

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

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

1 Ответ

3 голосов
/ 02 января 2009

Как правило, возникают две основные проблемы, возникающие при создании отбрасываемых источников рефраста, которые исходят непосредственно от 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»). В частности, в проекте refrast используются внешние заголовки D3D9, которые не включены в XP DDK. Простое использование последних WDK (переименованных из «DDK» после XP) решает эту проблему. В отличие от наименования, все более новые WDK, как правило, являются надмножествами более старых выпусков и поэтому включают в себя среды сборки для платформ, начиная с XP.

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

...