簡體   English   中英

DirectX12與Premake5:鏈接Directx12靜態庫

[英]DirectX12 with Premake5: Linking Directx12 Static Libraries

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

  • 但是,我無法鏈接到適當的dx12庫

這是我過去與Dx12鏈接的方式。 我將這些宏放在main.cpp中,效果很好。

    #pragma comment(lib, "d3d12.lib")
    #pragma comment(lib, "dxgi.lib")
    #pragma comment(lib, "d3dcompiler.lib")

但是,建議我不要在源代碼中包含庫。 在將項目轉換為premake5時,我想知道處理這種情況的正確方法。

抱歉,我是premake5之類的工具的新手。 並且不確定如何進行。

更新1:我嘗試添加以下代碼來解決鏈接器錯誤。

    print("Linking DX12 Libs") 
    libdirs { 
    os.findlib("d3d12.lib"), 
    os.findlib("dxgi.lib"), 
    os.findlib("d3dcompiler.lib") } 
    links { "d3d12.lib", "dxgi.lib", "d3dcompiler.lib" }

但是,我仍然收到鏈接器錯誤。

對於問題的第一部分,您需要做的就是在腳本中使用鏈接 它看起來像這樣:

links
{
   "d3d12.lib",
   "dxgi.lib",
   "d3dcompiler.lib"
}

如果lib文件位於根目錄(構建解決方案的目錄)中,則以上方法將起作用。 如果它們在其他文件夾上,則可以使用令牌,例如%{prj.location}%{prj.name}等。

DLPDev主要*是正確的。

*指定庫時,應省略系統特定的修飾,例如前綴或文件擴展名。 Premake會根據目標平台自動合成正確的格式。 該規則的一個例外是Mac OS X框架,其中需要文件擴展名來標識它。

由於對過濾器功能的不了解,我犯了一個嚴重的錯誤。 在發布過濾器之后,我才調用links 僅在發布模式下鏈接了dx12庫。

   -- 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功能的范圍

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM