2016-11-09 15 views
0

我有一個C++/CLI命令行客戶端,我試圖導入一個本地C++庫,它又有#include <boost/asio.hpp>如何將使用boost :: asio的本地C++靜態庫導入CLI/C++混合模式應用程序?

當我嘗試導入此我得到以下錯誤:

2>C:\boost_1_54_0\boost/asio/generic/detail/endpoint.hpp(27): error C2059: syntax error : 'generic' 
2>C:\boost_1_54_0\boost/asio/generic/detail/endpoint.hpp(27): error C2143: syntax error : missing ';' before '{' 
2>C:\boost_1_54_0\boost/asio/generic/detail/endpoint.hpp(27): error C2447: '{' : missing function header (old-style formal list?) 
2>C:\boost_1_54_0\boost/asio/generic/detail/impl/endpoint.ipp(32): error C2059: syntax error : 'generic' 

的包括必須是在靜態庫的頭球爲他們的成員變量。

那麼從靜態/本地庫中導入和使用這些類最簡單的選擇是什麼?

+0

這可能是重複的,因爲還有另一個問題,答案稍微簡潔一點,也應該解決這個問題http://stackoverflow.com/questions/27071560/how-to-use-boost-classes-in -a-net-ccli-gui-application?rq = 1 – Alex

回答

2

這個問題已經出現在boost trac上,你可以找到它here。在目前的解決方案(邁克爾·拉斯穆森提供)就是做這個

#ifdef __cplusplus_cli 
#define generic __identifier(generic) 
#endif> 
#include <boost/filesystem.hpp> 
#ifdef __cplusplus_cli 
#undef generic 
#endif 

和包裝你升壓包括那些具有與這些的ifdef通用符號的問題。

編輯:我錯過了關於你的庫是靜態庫的一點,你可能想要使用動態boost庫,它可以避免定義多個符號的問題。使用BOOST_ALL_DYN_LINK預處理器定義來代替使用boost dll。

+0

確實看起來確實會使錯誤消息消失。好一個! –

相關問題