[choreonoid-users-ja 00081] Re: ChoreonoidプラグインでのBoost Asio利用

岡元 崇紘 tokamoto @ cvl.iis.u-tokyo.ac.jp
2013年 2月 14日 (木) 20:57:59 JST


原さん、中岡さん、

岡元です。
おっしゃる通り、VisualStudio2010でBOOST_ASIO_DISABLE_STD_SHARED_PTRをプリプロセッサの定義に加えたところ
自分のプラグインでも正常にインクルード出来るようになりました。
有難うございました。

--
岡元

From: choreonoid-users-ja-bounces @ choreonoid.org [mailto:choreonoid-users-ja-bounces @ choreonoid.org] On Behalf Of Isao Hara
Sent: Thursday, February 14, 2013 9:07 AM
To: choreonoid-users-ja @ choreonoid.org
Subject: [choreonoid-users-ja 00080] Re: ChoreonoidプラグインでのBoost Asio利用

岡本さん、中岡さん:

原@産総研です。
下記のエラーメッセージをみると std::shared_ptr  がないのが問題のようですね。
bootsのヘッダーを少し見ると、 detail/config.hpp の130行目あたりに、

// Standard library support for shared_ptr and weak_ptr.
#if !defined(BOOST_ASIO_DISABLE_STD_SHARED_PTR)
# if defined(__GNUC__)
#  if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 4)
#   if defined(__GXX_EXPERIMENTAL_CXX0X__)
#    define BOOST_ASIO_HAS_STD_SHARED_PTR
#   endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
#  endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 4)
# endif // defined(__GNUC__)
# if defined(BOOST_MSVC)
#  if (_MSC_VER >= 1600)
#   define BOOST_ASIO_HAS_STD_SHARED_PTR
#  endif // (_MSC_VER >= 1600)
# endif // defined(BOOST_MSVC)
#endif // !defined(BOOST_ASIO_DISABLE_STD_SHARED_PTR)

と記載されています。
また、

 http://www.boost.org/doc/libs/1_47_0/doc/html/boost_asio/overview/cpp2011/shared_ptr.html

にもg++ 4.3 以降と Microsoft Visual C++ 10では、デフォルトで有効になっていると書かれていますね。

ところで、現在、Windowsで使用されているコンパイラは、VC2010でしょうか?
もしかすると何らかのオプション定義をしなければいけないかもしれませんが、下記のエラーをなくすには、

BOOST_ASIO_DISABLE_STD_SHARED_PTR

を定義してコンパイルすればよいのではないでしょうか?

(2013/02/14 4:54), 岡元 崇紘 wrote:
中岡さん、

ご返信有難うございます。

こちらでもUbuntu12.04の環境を構築しGRobotPluginにboost/asio.hppをインクルー
ドしてみましたが、確かに問題なく読み込めるようです。
Ubuntu環境だとshファイルから一括で依存ライブラリがインストールされるので非常
に楽ですね。

Asioに関してはやはりWindows(win7 64bit,32bit)環境でのみ起こるコンパイルエ
ラーであり、
下記のように/detail関連の読み込みでうまくいかないようなので、
こちらでもう少し原因と解決方法を探ってみたいと思います。

2>C:/Program Files
(x86)/boost/boost_1_47\boost/asio/detail/shared_ptr.hpp(31): error C2039:
'shared_ptr' : 'std' のメンバーではありません。
2>C:/Program Files
(x86)/boost/boost_1_47\boost/asio/detail/shared_ptr.hpp(31): error C2868:
'boost::shared_ptr' : using 宣言の構文が無効です。修飾された名前が必要です。
2>C:/Program Files
(x86)/boost/boost_1_47\boost/asio/detail/weak_ptr.hpp(31): error C2039:
'weak_ptr' : 'std' のメンバーではありません。
2>C:/Program Files
(x86)/boost/boost_1_47\boost/asio/detail/weak_ptr.hpp(31): error C2873:
'weak_ptr' : シンボルを using 宣言の中で使用することはできません。


有難うございました。

--
岡元


_______________________________________________
choreonoid-users-ja mailing list
choreonoid-users-ja @ choreonoid.org
https://choreonoid.org/mailman/listinfo/choreonoid-users-ja



-- 
---------
産業技術総合研究所  知能システム研究部門
統合知能研究グループ 主任研究員
ソフトウェアプラットフォーム研究班 班長
 原  功 <Isao-Hara @ aist.go.jp>
Isao HARA, Senior Research Scientist, ISRI, AIST, Japan
Phone: +81-29-861-5973 


choreonoid-users-ja メーリングリストの案内