2015-11-05 29 views
2

this page,使用短耳不帶升壓應該是相當簡單的,但我現在還不能編譯任何文件與include看起來像任何一種:如何使用短耳獨立在Xcode C++ 11不帶升壓

#include <asio> 
#include <asio.hpp> 
#include <asio/version.hpp> 

我已經把我的編譯器使用C++ 11(它已經在做,雖然我沒有從切換到gnu++11c++11),我已經把#define ASIO_STANDALONE各種包括我想之前。

是否有一些額外的工作需要訪問c + + 11之外的Asio頭?在編譯過程中,我發現有file not found錯誤與上述任何嘗試。

+0

僅僅因爲你設置了一些標誌和預處理器宏並不意味着這些頭文件奇蹟般的改變了位置。他們仍然和以前一樣。 –

+0

@JoachimPileborg我明白,但標題在哪裏?當我使用其他C++ 11標準庫時,我不必做任何額外的事情。 Asio的特別之處在於您必須手動查找標題所在的位置?或者你是否說我必須從C++ 11本地環境之外手動添加這些頭文件? – johnbakers

+1

我的意思是ASIO仍然是Boost的一部分,即使它不使用Boost,因此頭文件仍然在'boost'子目錄中,所以你需要'#include '。你仍然需要安裝Boost。 –

回答

6

短耳可以在不升壓被使用,如果滿足以下條件:

  • C++ 11(或更高版本)編譯器在C++ 11(或更高版本)編譯模式。如何啓用此模式因編譯器而異。對於GCC/clang,使用-std=c++11標誌。對於Xcode在項目設置中將C++語言方言設置爲C++ 11或更高版本
  • 從think-async.com下載Asio頭文件。 Asio不是標準庫(尚未)的一部分。它與Boost捆綁在一起,可以從作者網站單獨購買。如何將Asio添加到包含路徑基於編譯器而有所不同。對於GCC/clang,使用-I/path/to/asio或將Asio頭文件放在/ use/local/include中。 Xcode還將讀取/ usr/local/include,或者您可以在項目配置的標題搜索路徑部分中指定自定義標題路徑。
  • #define ASIO_STANDALONE之前包括Asio頭。這個定義告訴Asio使用C++ 11標準庫的特性來處理錯誤代碼,共享指針等,而不是使用Boost的polyfills。