首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DirectX12与Premake5:链接Directx12静态库

DirectX12与Premake5:链接Directx12静态库
EN

Stack Overflow用户
提问于 2019-03-07 08:34:02
回答 2查看 732关注 0票数 0

我转而使用premake5,而不是直接使用Visual 2017。

  • 但是,我在链接到适当的dx12库时遇到了问题

下面是我过去如何与Dx12链接的方式。我会把这些宏放在我的main.cpp中,它工作得很好。

代码语言:javascript
复制
    #pragma comment(lib, "d3d12.lib")
    #pragma comment(lib, "dxgi.lib")
    #pragma comment(lib, "d3dcompiler.lib")

但是,建议我不要在源代码中包含库。当我将我的项目转换为premake5时,我想知道处理这种情况的正确方法。

对不起,我对premake5这样的工具并不熟悉。我不知道该怎么做。

更新1:我尝试添加以下代码来解决链接器错误。

代码语言:javascript
复制
    print("Linking DX12 Libs") 
    libdirs { 
    os.findlib("d3d12.lib"), 
    os.findlib("dxgi.lib"), 
    os.findlib("d3dcompiler.lib") } 
    links { "d3d12.lib", "dxgi.lib", "d3dcompiler.lib" }

但是,我仍然会收到链接器错误。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-08 00:25:36

DLPDev基本上是正确的。

*在指定库时,应省略系统特定的装饰,如前缀或文件扩展名。预制作将根据目标平台自动合成正确的格式。该规则的一个例外是Mac框架,在该框架中,需要文件扩展名才能将其标识为此。

由于我对过滤器功能的无知,我犯了一个重大的错误。在发布过滤器之后调用links之前。它只链接了发布模式下的dx12库。

代码语言:javascript
复制
   -- This is all you need to link against dx12 there is no special sauce
   -- You don't need to call libdirs or os.findlib for the dx12 libraries
   -- This code works for both configurations since it is called before the filter function
   links { "d3d12", "dxgi", "d3dcompiler" }
   filter("configurations:Debug")
      defines({ "DEBUG" })
      symbols("On")
      optimize("Off")
   filter("configurations:Release")
      defines({ "NDEBUG" })
      symbols("On")`

TLDR:在使用links函数时,要小心不要包括文件扩展名。并注意filter函数的范围

票数 1
EN

Stack Overflow用户

发布于 2019-03-07 11:25:32

对于问题的第一部分,只需在脚本中使用链接即可。看起来是这样的:

代码语言:javascript
复制
links
{
   "d3d12.lib",
   "dxgi.lib",
   "d3dcompiler.lib"
}

如果lib文件位于根目录(构建解决方案的地方),上面的代码就可以工作。如果它们位于其他文件夹中,则可以使用令牌,如%{prj.location}%{prj.name}等。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55039294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档