簡體   English   中英

Mac上Boost的鏈接器錯誤(OSX 10.10.02 | Xcode 6.1.1)

[英]Linker errors with Boost on Mac (OSX 10.10.02 | Xcode 6.1.1)

最近我開始在Windows上使用Boost進行項目。 它需要是跨平台的,所以我也在Mac上安裝它。 不幸; 每當我將它添加到Xcode項目時,它都會給我一大堆鏈接器錯誤和轉換警告。

其中一個鏈接器錯誤的示例:

架構x86_64的未定義符號:
“boost :: system :: system_category()”,引自:main.o中的___cxx_global_var_init2:main.o中的boost :: asio :: error :: get_system_category()在main中的boost :: system :: error_code :: error_code()的.o “升壓::系統:: generic_category()”,從引用:___cxx_global_var_init在main.o中___cxx_global_var_init1在main.o中LD:符號(多個)未找到架構x86_64的鐺:錯誤:連接器命令,退出代碼1失敗(使用-v查看調用)

其中一個轉換警告的示例:

在文件從/usr/local/Cellar/boost/1.57.0/include/boost/date_time/posix_time/posix_time_types.hpp:16包括:/usr/local/Cellar/boost/1.57.0/include/boost/date_time/ posix_time / posix_time_duration.hpp:24:21:警告:隱式轉換失去整數精度:'long'到'hour_type'(又名'int')[ - Wortort-64-to-32] time_duration(h,0,0)

我嘗試了幾種安裝方法和配置方法,但它仍然無法正常工作。

這些是我的步驟:

  1. 編譯Boost或獲取Boost的編譯版本。
  2. 創建一個XCode項目。
  3. 在主類中輸入示例代碼。
  4. 將標頭和庫路徑添加到Xcode項目文件中。
  5. 建立。

編譯選項我嘗試過:

  • 使用官方指南從源代碼編譯。
  • 使用我在Stackoverflow上找到的一些腳本從源代碼編譯。
  • 安裝brew包管理器並下載包含二進制文件的包。

我試過的配置選項:

  1. 將標頭搜索路徑設置為/usr/local/Cellar/boost/1.57.0/include或等效項,並將庫搜索路徑設置為/usr/local/Cellar/boost/1.57.0/lib或等效項。
  2. 僅設置標題搜索路徑,但不設置庫路徑。
  3. 選項1但遞歸(導致更多錯誤)。

如果有人能指出我正確的方向,我會非常感激。 我認為這是Xcode相關的東西,因為所有編譯版本都給我相同的錯誤。

我找到了答案。 將標題和庫路徑添加到項目搜索路徑后,您需要轉到“構建階段”。 在那里,您需要將所需的各個庫添加到“鏈接庫到二進制”子部分。 您可以在lib文件夾中找到必要的文件(在boost文件夾中)。

您可以選擇擴展名為.a或擴展名為.mt.dylib的庫文件。 如果選擇.a擴展名文件,則庫將添加到程序的編譯版本中。 如果選擇.mt.dylib文件,則庫不會添加到已編譯的程序中。 在這種情況下,您假設動態庫文件已經存在於運行該程序的計算機上。

暫無
暫無

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

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