如何将d3dx9_43.dll打包到我的应用程序中

How to package d3dx9_43.dll in to my application?

本文关键字:我的 应用程序 dll d3dx9      更新时间:2023-10-16

我做了一个小游戏,我需要带到学校进行一些测试。

不幸的是,作为一个学校系统,我需要打包所有尚未安装的dll,以便它可以运行。在电脑上安装任何东西都是不可能的。几天前,我注意到由于缺少d3dx9_43.dll文件,应用程序无法启动。

我已经静态链接了我使用过的库,我很困惑为什么没有包括这个。我参考了所有我使用过的Direct3D 9库(或者我认为是这样)。

有谁能帮我吗?

我使用的是Visual Studio c++ 2010和Direct3D 9。

唯一遵守许可证的选项是安装可重新发布的包。

D3DX的早期版本确实支持静态链接,但出于安全原因,MS更改了规则以禁止静态链接。他们希望能够通过WIndows Update为这些dll提供服务,这只有在使用官方可重新发布的软件包安装时才有可能。

你的一个可能的选择是看看你是否可以避免链接到D3DX。这可能是因为您使用了一个足够小的库空间,您可以绕过它。

这应该通过在应用程序安装程序中包含DirectX 9.0可重新分发包来完成,但是因为你不能安装任何东西,所以你要么必须将所有dll与可执行文件一起发布(这违反SDK许可证),要么静态地链接到DirectX运行时(这也可能是不允许的)。

针对DirectX运行时的静态链接不是一个好主意,也不像看起来那么微不足道,我甚至不确定这是可能的,但你必须有实际的静态库(而不是实际上由自己链接到dll)。

所以最简单的解决方案是保留所有需要的DLL与exe,如果你担心丢失一个依赖,你可以使用依赖沃克。请注意,此解决方案不被SDK许可证允许,并且不能用于实际将应用程序分发给最终用户