2016-01-18 46 views
-1

我正嘗試構建一個項目,該項目使用flex並且在鏈接時未定義以下flex符號:yy_create_bufferyy_switch_to_buffer。這些顯然是靈活的功能,如flex manual所述。yy_switch_to_buffer和yy_create_buffer定義在哪裏?

你對這些功能的定義有什麼概念嗎?我懷疑他們是從一個Flex庫應傳遞給連接器......不過,我已經找遍了最新的柔性,柔性devel包我的分佈(紅帽)和似乎沒有進行任何此類庫。

回答

1

符號將在flex的輸出中,而不是在庫中。它們在骨架中定義(其中flexm4擴展)。如果您遇到這些符號的鏈接問題,則問題可能是由於參考代碼的定義錯誤:

  • 該骨架可以生成C或C++代碼;在後一種情況下,需要鏈接到它的類名稱,例如,yyFlexLexer::yy_create_buffer
  • 可以通過命令行選項flex來更改前導yy以更改前綴。在編譯某些文件時,您的構建腳本可能會忽略提供此選項。
+0

有makefile中的一個錯誤,並生成過程是使用* *法,而不是* *彎曲。雖然法/柔性具有相似的語法和API,法不支持切換輸入緩衝器,並因此在兩個未定義的符號。感謝提示。 – Radu