如何将DirectX库包含到我自己的静态库(独立库)中?

时间:2012-10-10 14:15:04

标签: c++ directx static-libraries

我正在编写自己的库来实现Engine3D接口(由我制作)。

该库的“用户”应在其项目中包含它(以及Engine3D接口的标题),并在没有任何其他库等的情况下运行它。

不幸的是,当我从我的项目中创建一个静态库时,'user'必须同时包含我的库和DirectX库,为DirectX等设置目录。

有没有办法让它变得简单(只有一个lib就是他需要的一切)并且对用户透明没有DirectX库,目录中的项目,所有里面我自己的库)?

我正在使用Visual C ++ 2012.我不想创建动态库,而是静态库。

1 个答案:

答案 0 :(得分:2)

巨大的巧合,因为我在一小时前遇到了完全相同的问题,并找到了一个非常简单的解决方案。如果您使用#pragma comment指令来包含Directx库,您只需要为它们提供lib的完整路径(而不仅仅是名称),如下所示:

#pragma comment ( lib, "c:/Softwares/Development/Lib/DirectX/Lib/x86/dxgi.lib" )
#pragma comment ( lib, "c:/Softwares/Development/Lib/DirectX/Lib/x86/d3d11.lib" )
#pragma comment ( lib, "c:/Softwares/Development/Lib/DirectX/Lib/x86/d3dx11.lib" )
#pragma comment ( lib, "c:/Softwares/Development/Lib/DirectX/Lib/x86/d3dx10.lib" )

显然,我的示例中的路径与我的个人配置有关,您应该在计算机上定义DirectX libs目录的正确路径。然后,您只需要进入项目配置 - > C / C ++ - >一般 - > Additionnal包含目录并设置DirectX包含文件的路径。

就是这样!现在,您可以编译DirectX接口并将其链接到另一个项目,而无需在此后进行更多设置。

我希望它会对你有所帮助,并对我糟糕的英语感到抱歉。 :)