簡體   English   中英

體系結構x86_64的未定義符號:Cadventure-txt

[英]Undefined symbols for architecture x86_64 : Cadventure-txt

我正在嘗試編譯Cadventure-txt ,但我一直在獲取Undefined symbols for architecture x86_64錯誤的Undefined symbols for architecture x86_64 我讀了SO,以找到可能的解決方案,但到目前為止,仍無濟於事。

我沒有對github上可用的文件進行任何更改。 如果有人能理解以下錯誤,那將非常好:)我對C和編程很陌生,所以對於從哪里開始調試此類錯誤我沒有太多線索。

這是完整的錯誤:

Undefined symbols for architecture x86_64:
  "_is_command", referenced from:
      _init in main.o
      _play in main.o
  "_is_letter", referenced from:
      _init in main.o
      _play in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

_is_command_is_letter這兩個函數定義為inline

您說過您正在使用XCode作為使用Clang的編譯器。

默認情況下,Clang在GNU C11模式下構建C代碼,因此它對inline關鍵字使用標准的C99語義。 在C99中,內聯意味着僅提供用於內聯的函數定義,並且程序中其他位置還有另一個定義(無內聯)。

但是程序中沒有這些功能的其他定義,因此在鏈接時出現未定義符號的錯誤。

一些解決方案:

  • 將函數定義為static inline
  • 刪除inline
  • 為函數添加非內聯定義。
  • 使用std=gnu89在GNU C89模式下進行編譯。

在此處閱讀有關此內容的更多信息。

ld開頭的錯誤線來自鏈接器ld

它說它找不到您使用的符號(即函數名); 可能,您只是沒有鏈接到包含這些功能的文件。

暫無
暫無

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

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