我正在编写自己的库来实现Engine3D接口(由我制作)。
该库的“用户”应在其项目中包含它(以及Engine3D接口的标题),并在没有任何其他库等的情况下运行它。
不幸的是,当我从我的项目中创建一个静态库时,'user'必须同时包含我的库和DirectX库,为DirectX等设置目录。
有没有办法让它变得简单(只有一个lib就是他需要的一切)并且对用户透明(没有DirectX库,目录中的项目,所有里面我自己的库)?
我正在使用Visual C ++ 2012.我不想创建动态库,而是静态库。
答案 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接口并将其链接到另一个项目,而无需在此后进行更多设置。
我希望它会对你有所帮助,并对我糟糕的英语感到抱歉。 :)