3

Microsoft 将源代码分发给硬件供应商、驱动程序开发人员等,以参考其不同 Direct3D API 的实现。此代码使用永远神秘的 WDK(以前的 DDK)构建系统构建,并且几乎从不开箱即用。虽然被广泛使用,但此代码是半私有的,因此在更广泛的网络上永远没有任何基本的有用信息。这很常用(并且在这个社区中众所周知的痛苦),并且基本的构建信息足够不敏感,它应该可以在 Google 上发现。

构建自述文件建议使用 WDK 并使用命令进行构建build -cz -daytona。令人困惑的是,这会吐出一堆输出但什么也没有构建。

克服这个问题,带有 WDK 6001.18002 的 Vista,最新的 d3def9 源代码分发在link子项目中失败,“无法产生任何输出 - 警告被视为错误”。

XP d3dref9.dll 的构建也可能令人困惑,经常找不到 D3D 标头和类型。

4

1 回答 1

3

由于直接来自 Microsoft,在构建 refrast source drop 时通常存在两个非常常见的主要问题。

首先,该build -cz -daytona命令要么是拼写错误,要么依赖于未记录的附加外部配置。在此模式下构建会解析所有源代码,但从不指定要构建的平台。由于指定实际输出的所有平台dirsdaytonawin9x)都是“可选的”,因此实际上没有构建任何内容。对此的解决方案是使用正确指定的命令build -cz daytona(没有 ' -' on daytona)。这应该解析源代码,然后实际构建所有内容。

除此之外,开箱即用的构建设置通常也存在问题。

新的 WDK(例如在 Vista 上)通常在最后的链接步骤中失败,并出现虚假链接器错误。通过添加以下内容可以轻松解决此问题:

LIBRARIAN_FLAGS = $(LIBRARIAN_FLAGS) /IGNORE:4001

link/sources.inc构建文件。在此之后,build -cz daytona在源drop 的根目录中应该构建和链接所有开箱即用的东西。

在 XP 上,如果使用较旧的 DDK(Windows Server 2003 之前的版本,即带有“XP”标签的 DDK),也会出现问题。特别是,refrast 项目依赖于外部存在的核心 D3D9 标头,这些不包含在 XP DDK 中。只需使用最新的 WDK(从 XP 后的“DDK”重新命名)即可解决此问题。与命名相反,所有较新的 WDK 通常都是旧版本的超集,因此包括通过 XP 支持平台的构建环境。

某些 XP refrast 源版本也可能存在问题,包括在较新的 WDK 编译器版本中触发更多迂腐编译器错误的代码。然而,这些通常可以通过迭代编译和源代码调整来轻松修复,以响应编译器引发的任何简单的安全/正确性错误。

于 2009-01-02T20:21:21.053 回答