簡體   English   中英

LDC2 -I選項導致無法解析的外部

[英]LDC2 -I option results in unresolved externals

我正在使用最新的LDC2 beta,並且在使用-I運行編譯器時(也在中查找導入),它會在未解決的外部條件下失敗。 這些是我的命令。

$ ldc2 "source\setup.d" -I "source" -J "build\vars" -of "build\bin\setup.exe" -m32 -g
setup.obj : error LNK2019: unresolved external symbol __D6common17createErrorDialogFxC9ExceptionZv referenced in function __Dmain
setup.obj : error LNK2019: unresolved external symbol __D6common14getConsoleArgsFxPuZAAya referenced in function __D5setup20getAvailableBrowsersFZ14__foreachbody1MFKC3std7windows8registry3KeyZi
setup.obj : error LNK2001: unresolved external symbol __D6common12__ModuleInfoZ
build\bin\setup.exe : fatal error LNK1120: 3 unresolved externals
Error: C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.15.26726\bin\HostX86\x86\link.exe failed with status: 1120

但是,當我明確告訴編譯器setup.d依賴common.d時,下一個效果很好。

$ ldc2 "source\setup.d" "source\common.d" -J "build\vars" -of "build\bin\setup.exe" -m32 -g

我在帶有VS Build Tools 2017的Windows上的DMD v2.082.0上使用LDC2版本1.12.0-beta2。感謝所有解決方案或修正。

注意:這些編譯器命令將由其他代碼生成,因此使用顯式文件名是不可行的。

-I告訴它在哪里找到要導入的源代碼。 假設實際的目標代碼將在傳遞給鏈接器的某個地方的預編譯庫(或單獨的.obj文件)中找到。

如果您希望它使用最新的ldc構建之一(截至最近幾個月)在構建中包含文件,則除了 -I ,它還具有-i 您可以通過。 -I告訴它在哪里可以找到導入文件。 -i告訴它將它們添加到構建中,而不僅僅是將它們視為外部庫頭。

這就是您的三個選擇:

  • 單獨編譯該庫,然后將生成的lib文件添加到鏈接步驟
  • 在命令行上一起傳遞源文件(如果它是由其他代碼生成的,只需更改該代碼即可遍歷目錄大聲笑)
  • 獲取最新的編譯器版本之一,並將-i添加到build命令。

暫無
暫無

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

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