[openrtm-users 03388] Re: Visual Studio ランタイムライブラリ/MTdの問題

宮本信彦 n-miyamoto @ aist.go.jp
2017年 4月 7日 (金) 17:53:00 JST


升谷先生


産総研の宮本です。


/MTdでビルドした時に発生する問題ですが、これは/MT・/MTdの実行ファイルが他のDLLとリンクしている場合に、実行ファイル側で確保したメモリ領域をDLL側で開放しようとしたりすると発生します。


以下の手順でOpenRTM-aistの静的ライブラリを作成して使用すれば一応動作はできるので、ご参考になれば幸いです。


http://openrtm.org/openrtm/ja/node/6194



よろしくお願いします。

-----Original Message-----
From: openrtm-users-bounces @ openrtm.org [mailto:openrtm-users-bounces @ openrtm.org] On Behalf Of MASUTANI Yasuhiro
Sent: Thursday, April 6, 2017 9:31 AM
To: OpenRTM-aist mailing-list for generic users <openrtm-users @ openrtm.org>
Subject: [openrtm-users 03387] Visual Studio ランタイムライブラリ/MTdの問題

宮本様,OpenRTM-aist開発者の皆様,

大阪電通大の升谷です.

度々お騒がせして恐縮です.

Visual Studio C++, /MTd, OutPort という組み合わせで,実行時に問題が起
こっています.

0. Windows 10 64bit上でOpenRTM-aist-1.1.2-RELEASE_x86_64.msiをインストー
   ルして使っています.

1. RTC BuilderでTimedLongの入出力のデータポートを持つコンポーネント
   MTTestのコード生成.そのRTC.xmlを添付します.

2. CMakeでVisual Studio 2012, 64bitでConfigurate, Generate

3. Visual Studio 2012でソリューションを開き,MTTestCompプロジェクトの
   プロパティのコード生成のランタイムライブラリを/MDdから/MTdに変更.

4. Debug構成でビルド.

5. MTTestCompを実行.

6. Debug Assetion Failed!のパネルが現れる.
   (画像を添付します)

・/MDdでは起こりません.

・Release構成で/MTでは起こりません.

・MTTest.cppの中の「addOutPort("out", m_outOut);」をコメントアウトする
  と起こりません.

この問題のため,「/MT」で作成しようとするコンポーネントのデバッグがで
きずに困っています.

調べていただけると幸いです.
どうかよろしくお願いいたします.

-- 
# 升谷 保博
# 大阪電気通信大学 総合情報学部 情報学科
# 575-0063 大阪府四條畷市清滝1130-70 / TEL&FAX: 072-876-5107


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