#1915作業メモ¶
作成:片見
チケット1915( #1915 )の作業メモです。
- 目次
- #1915作業メモ
- OpenRTMのVC2010対応
- VC2010用OpenCV-RTC群
OpenRTMのVC2010対応¶
作業概要- GUI でビルド
- CUI でビルド
- sln、vcxproj、props、生成用pythonスクリプト作成
- Makefile の clean で vcxproj を消すようにすることを忘れないでね!
- 生成したzipファイルでビルド
- ソースコードの変更
- 動作確認
- 変更ファイル
GUI でビルド¶
Vc2010 から プロジェクトフィル、プロパティファイルが変更になったので、とりえず、GUIでビルドしてそれらのファイルを作成する。
問題¶
examples を実行するとエラーが発生する。¶
- 現象
インストール後、examples のコンポーネントを実行するとエラーが発生する。
- 原因
コンポーネントが RTC100d.dll を使用していたため。
(depends.exe でコンポーネントが依存する dll を確認。)
コンポーネントのリンクでは、RTC100.dll を使用するように指定していたが、rtm のリンクで作成される RTC100.def ファイルのライブラリ名を RTC100d としていた。
そのため、コンポーネントの実行時に RTC100d.dll をロードしてしまていた。
- 対策
libRTC_vc10.vcxproj を修正して、RTC100.def ファイルのライブラリ名を RTC100 に変更した。
CUI でビルド¶
vc2010から msbuild に統一された。
オプションについては下記に url 参照。
http://blogs.msdn.com/b/vcblog/archive/2010/01/11/vcbuild-vs-c-msbuild-on-the-command-line.aspx
全構成をビルドすることはできないようなので、debug と release を別々にビルドを実施するように変更。
msbuild /M:2 /t:rebuild /p:configuration=debug OpenRTM-aist_vc10.sln msbuild /M:2 /t:rebuild /p:configuration=release OpenRTM-aist_vc10.sln
sln、vcxproj、props、生成用pythonスクリプト作成¶
vcxprojtool.py 作成¶
ベースは vcprojtool.py 。libcoil.vcproj.yaml などの yaml ファイルも変更が必要。(ConfigurationType の tool が vcproj と vcxproj で異なるため。)
vcxproj_template の %s の内容
libRTCSkel | libcoil | libRTC | ||||
1 | ConfigurationType | LIB | DLL | DLL | EXE | DLL |
2 | PreBuildEvent | ○ | ○ | ○ | ||
3 | ClCompile | ○ | ○ | ○ | ○ | ○ |
4 | Lib | ○ | ||||
5 | PreLinkEvent | ○ | ○ | |||
6 | Link | ○ | ○ | ○ | ○ | |
7 | PostBuildEvent | ○ | ○ | ○ |
libRTCSkel_vc10.vcxproj の作業メモ¶
Import Project はセミコロン区切りで複数宣言してもOK? (解決)ビルドした結果、この書き方はNG。<Import Project="$(SolutionDir)$(SolutionDir)rtm_config.vsprops;$(SolutionDir)rtm_distbuild.vsprops" />
- LinkIncremental Condition は不要?
Command はべた書きOK?(解決)Key,Value でやったら問題回避DebugInformationFormat バグ?(解決)yamlのミス修正して解決- Lib タグ ON/OFF
とりえぜず、タグだけ存在して内容は空の状態。
ビルドの問題がなければこのままで行く。 - Link タグ ON/OFF
とりえぜず、タグだけ存在して内容は空の状態
ビルドの問題がなければこのままで行く。 PostBuildEvent は?(解決)バグ修正により解決
libcoil_vc10.vcxproj の作業メモ¶
libcoil_vc10.vcxproj を生成する vcxprojtool.py は./src/lib/coil/build/ に格納されいてるものを使用するの注意されたし!
- LinkIncremental がfalse
PreBuildEvent に ClCompile の内容が入っている。(解決)バグ修正により解決- ClCompile の内容がおかいしい。
yaml を修正。不足しているかもしれないがとりえあずこれで、行く。 Lib に PreLinkEvent の内容が入っている。(解決)バグ修正により解決
libRTC_vc10.vcxproj の作業メモ¶
vcxprojを生成するため、Makefile.amを修正したらビルドエラーでるようになってしまった。 (解決)slntool.py で guild が見つからずエラーになっている。vcxproj に対応していないためと思われる。後で直す。PostBuildEvent の内容が空(解決)yaml を修正。
rtc.vcxproj の作業メモ¶
OutDir Condition の指定が違うInDir Condition の指定が違うPreBuildEvent が空(解決)yaml を修正。ClCompileの内容(解決)yaml を修正。Libが余計(解決)yaml を修正。PreLinkEvent が余計(解決)yaml を修正。
rtcdll.vcxproj の作業メモ¶
- OutDir Condition の指定が違う
- InDir Condition の指定が違う
コンパイルオプション対応表¶
- Optimization
vc9 vc10 0 Disabled
- BasicRuntimeChecks
vc9 vc10 3 EnableFastChecks
- RuntimeLibrary
vc9 vc10 2 MultiThreadedDLL 3 MultiThreadedDebugDLL
- PrecompiledHeader/UsePrecompiledHeader
vc9 vc10 0 NotUsing
- WarningLevel
vc9 vc10 3 Level3
- DebugInformationFormat
vc9 vc10 3 ProgramDatabase 4 EditAndContinue
リンカオプション対応表¶
- DebugInformationFormat
vc9 vc10 4 EditAndContinue
- LINCREMENTAL
vc9 vc10 1 false 2 true
- SubSystem
vc9 vc10 1 Console 2 Windows
- TargetMachine
vc9 vc10 1 MachineX86 2 MachineX86
- EnableCOMDATFolding
vc9 vc10 2 true
- OptimizeReferences
vc9 vc10 2 true
- coilのtestsは後回しにする。
slntool.py の修正¶
GUIDが正確に取得できない。解決Depned depファイルから読み込みでエラー 解決yaml.composer.ComposerError: found undefined alias 'libcoil' in "<string>", line 31, column 9: - *libcoil ^
coilのvcxprojが巧くwin32へコピーされていない原因と思われる。
./win32/OpenRTM-aist/coil/Makefile.am
./OpenRTM-aist-1.0.0/win32/OpenRTM-aist/coil/Makefile.am
Makefile.am の修正¶
- coil/tests は後回し。
- vcxproj の削除
生成したzipでビルド¶
エラー 解決C:\cygwin\home\katami\work\ticket1915\OpenRTM-aist-1.0.0-win32\OpenRTM-aist>copy etc\rtm_config_omni414.props rtm_config.props
指定されたファイルが見つかりません。C:\cygwin\home\katami\work\ticket1915\OpenRTM-aist-1.0.0-win32\OpenRTM-aist>copy etc\rtm_config_omni414.props examples\USBCamera\rtm_config.props
指定されたファイルが見つかりません。C:\cygwin\home\katami\work\ticket1915\OpenRTM-aist-1.0.0-win32\OpenRTM-aist>copy coil_config.props examples\USBCamera\coil_config.props
指定されたファイルが見つかりません。エラー 解決
4>c:\cygwin\home\katami\work\ticket1915\openrtm-aist-1.0.0-win32\openrtm-aist\examples\usbcamera\usbcameramonitor_vc10.vcxproj(34,4): error msb4019: インポートされたプロジェクト "c:\cygwin\home\katami\work\ticket1915\openrtm-aist-1.0.0-win32\openrtm-aist\user_config.props" が見つかりませんでした。<import> 宣言のパスが正しいかどうか、およびファイルがディスクに存在しているかどうかを確認してください。- エラー
3>C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\Microsoft.Cpp.Win32.Targets(268,5): error : 要素 <SubSystem> の値 "2" は無効です。 [C:\cygwin\home\katami\work\ticket1915\OpenRTM-aist-1.0.0-win32\OpenRTM-aist\coil\libcoil_vc10.vcxproj]
3>C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\Microsoft.Cpp.Win32.Targets(268,5): error : 要素 <TargetMachine> の値 "1" は無効です。 [C:\cygwin\home\katami\work\ticket1915\OpenRTM-aist-1.0.0-win32\OpenRTM-aist\coil\libcoil_vc10.vcxproj] - エラー
2>C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\Microsoft.Cpp.Win32.Targets(147,5): error : 要素 <RuntimeLibrary> の値 "2" は無効です。 [C:\cygwin\home\katami\work\ticket1915\OpenRTM-aist-1.0.0-win32\OpenRTM-aist\rtm\idl\libRTCSkel_vc10.vcxproj]
2>C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\Microsoft.Cpp.Win32.Targets(147,5): error : 要素 <WarningLevel> の値 "Lebel3" は無効です。 [C:\cygwin\home\katami\work\ticket1915\OpenRTM-aist-1.0.0-win32\OpenRTM-aist\rtm\idl\libRTCSkel_vc10.vcxproj] - エラー
3>C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(113,5): error MSB3073: コマンド "copy "C:\cygwin\home\katami\work\ticket1915\OpenRTM-aist-1.0.0-win32\OpenRTM-aist\coil\Debug\\\libcoil.lib" "C:\cygwin\home\katami\work\ticket1915\OpenRTM-aist-1.0.0-win32\OpenRTM-aist\bin\\" [C:\cygwin\home\katami\work\ticket1915\OpenRTM-aist-1.0.0-win32\OpenRTM-aist\coil\libcoil_vc10.vcxproj]
C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(113,5): error MSB3073: copy "C:\cygwin\home\katami\work\ticket1915\OpenRTM-aist-1.0.0-win32\OpenRTM-aist\coil\Debug\\\libcoil.dll" "C:\cygwin\home\katami\work\ticket1915\OpenRTM-aist-1.0.0-win32\OpenRTM-aist\bin\\" [C:\cygwin\home\katami\work\ticket1915\OpenRTM-aist-1.0.0-win32\OpenRTM-aist\coil\libcoil_vc10.vcxproj]C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(113,5): error MSB3073: [C:\cygwin\home\katami\work\ticket1915\OpenRTM-aist-1.0.0-win32\OpenRTM-aist\coil\libcoil_vc10.vcxproj]C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(113,5): error MSB3073: :VCEnd" はコード 1 で終了しました。 [C:\cygwin\home\katami\work\ticket1915\OpenRTM-aist-1.0.0-win32\OpenRTM-aist\coil\libcoil_vc10.vcxproj] - エラー
26>C:\cygwin\home\katami\work\ticket1915\OpenRTM-aist-1.0.0-win32\OpenRTM-aist\rtm/CorbaPort.h(1228): error C2664: 'PortableServer::POA::servant_to_id' : 1 番目の引数を 'PortableServer::RefCountServantBase *' から 'PortableServer::Servant' に変換できません。(新しい機能 ; ヘルプを参照) [C:\cygwin\home\katami\work\ticket1915\OpenRTM-aist-1.0.0-win32\OpenRTM-aist\rtm\libRTC_vc10.vcxproj]
指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
26>C:\cygwin\home\katami\work\ticket1915\OpenRTM-aist-1.0.0-win32\OpenRTM-aist\rtm/CorbaPort.h(1232): error C2664: 'PortableServer::POA::activate_object_with_id' : 2 番目の引数を 'PortableServer::RefCountServantBase *' から 'PortableServer::Servant' に変換できません。(新しい機能 ; ヘルプを参照) [C:\cygwin\home\katami\work\ticket1915\OpenRTM-aist-1.0.0-win32\OpenRTM-aist\rtm\libRTC_vc10.vcxproj] - エラー
ManagerConfig.obj : error LNK2005: "char const * const openrtm_name" (?openrtm_name@3PBDB) は既に version.obj で定義されています。 [C:\cygwin\home\katami\work\ticket1915\OpenRTM-aist-1.0.0-win32\OpenRTM-aist\rtm\libRTC_vc10.vcxproj]
@3PBDB) は既に version.obj で定義されています。 [C:\cygwin\home\katami\work\ticket1915\OpenRTM-aist-1.0.0-win32\OpenRTM-aist\rtm\libRTC_vc10.vcxproj]
ManagerConfig.obj : error LNK2005: "char const * const openrtm_version" (?openrtm_version
ManagerConfig.obj : error LNK2005: "char const * const corba_name" (?corba_name@@3PBDB) は既に version.obj で定義されています。 [C:\cygwin\home\katami\work\ticket1915\OpenRTM-aist-1.0.0-win32\OpenRTM-aist\rtm\libRTC_vc10.vcxproj]
libRTC_vc10.vcxproj の version.h を コンパイルしているところが問題。以下の行を消すとうまくいく。<ItemGroup> <ClCompile Include="version.h" />
filterを設定したのだが、まだ、巧くいっていない。設定ミスか?<ItemGroup> <Filter Include="Source Files"> <UniqueIdentifier>{343CFD7E-3FDD-11E0-BD95-001C23DA0BDF}</UniqueIdentifier> <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> </Filter> ・・・・・ <ItemGroup> <ClCompile Include="version.h"> <Filter>Source Files</Filter> </ClCompile>
./win32/OpenRTM-aist/installer/OpenRTM-aist.wxsこのファイルの <MergeRef Id="POLVCCRTx86.msm"/> を削除する必要あり。C:\cygwin\home\katami\work\ticket1915\OpenRTM-aist-1.0.0-win32\OpenRTM-aist\installer\OpenRTM-aist.wxs(13086) : error LGHT0094 : Unresolved reference to symbol 'WixMerge:POLVCCRTx86.msm' in section 'Product:{A3260F9A-456F-11E0-A90B-001C23DA0BDF}'. Microsoft (R) Windows Installer Xml Compiler version 3.5.1329.0 Copyright (C) Microsoft Corporation. All rights reserved.
- エラー
C:\cygwin\home\katami\work\ticket1915\OpenRTM-aist-1.0.0-win32\OpenRTM-aist\installer\OpenRTM-aist.wxs(257) : error LGHT0103 : The system cannot find the file '..\\bin\\rtcd.exe'.C:\cygwin\home\katami\work\ticket1915\OpenRTM-aist-1.0.0-win32\OpenRTM-aist\installer\OpenRTM-aist.wxs(268) : error LGHT0103 : The system cannot find the file '..\\bin\\rtcprof.exe'.
C:\cygwin\home\katami\work\ticket1915\OpenRTM-aist-1.0.0-win32\OpenRTM-aist\installer\OpenRTM-aist.wxs(289) : error LGHT0103 : The system cannot find the file '..\\rtm_config.vsprops'.
- エラー
C:\cygwin\home\katami\work\ticket1915\OpenRTM-aist-1.0.0-win32\OpenRTM-aist\installer\VC10msm_inc.wxs(5) : error LGHT0129 : Cannot open the merge module 'POLVCCRTx86.msm' from file 'C:\Program Files\Common Files\Merge Modules\policy_10_0_Microsoft_VC100_CRT_x86.msm'.
★Microsoft_VC100_CRT_x86.msm が見つからないので、削除しました。
ソースコードの変更¶
back_inserter のところで以下のエラーが発生するため、iterator をインクルードするように修正した。修正したファイル。
- ./rtm/InPortBase.cpp
- ./rtm/OutPortBase.cpp
- ./rtm/PeriodicECSharedComposite.cpp
動作確認¶
インストーラ¶
NameServer¶
examples¶
エラー
RTC100.def がうまく作られていかったため。ファイルのライブラリ名がlibRTCになっていた。
変更ファイル¶
- src/lib/rtm/OutPortBase.cpp
- src/lib/rtm/InPortBase.cpp
- src/lib/rtm/PeriodicECSharedComposite.cpp
- src/lib/rtm/tests/ManagerServant/Makefile.am
- src/lib/rtm/idl/Makefile.am
- src/lib/rtm/Makefile.am
- src/lib/coil/ace/Makefile.am
- src/lib/coil/win32/coil/Makefile.am
- src/lib/coil/win32/Makefile.am
- src/lib/coil/tests/File/Makefile.am
- src/lib/coil/tests/Logger/Makefile.am
- src/lib/coil/tests/Timer/Makefile.am
- src/lib/coil/tests/OS/Makefile.am
- src/lib/coil/tests/PeriodicTask/Makefile.am
- src/lib/coil/tests/Listener/Makefile.am
- src/lib/coil/tests/Condition/Makefile.am
- src/lib/coil/tests/TimeValue/Makefile.am
- src/lib/coil/tests/Properties/Makefile.am
- src/lib/coil/tests/Time/Makefile.am
- src/lib/coil/tests/Guard/Makefile.am
- src/lib/coil/tests/Mutex/Makefile.am
- src/lib/coil/tests/Singleton/Makefile.am
- src/lib/coil/tests/Task/Makefile.am
- src/lib/coil/tests/stringutil/Makefile.am
- src/lib/coil/tests/UUID/Makefile.am
- src/lib/coil/tests/Factory/Makefile.am
- src/lib/coil/tests/Makefile.am
- src/lib/coil/tests/DynamicLib/Makefile.am
- src/lib/coil/tests/Signal/Makefile.am
- src/lib/doil/utils/omniidl_be/tests/OrganizationProxy/Makefile.am
- src/lib/doil/utils/omniidl_be/tests/PortServiceProxy/Makefile.am
- src/lib/doil/utils/omniidl_be/tests/ConfigurationProxy/Makefile.am
- src/lib/doil/utils/omniidl_be/tests/ExecutionContextProxy/Makefile.am
- src/lib/rtc/corba/idl/Makefile.am
- utils/rtcprof/Makefile.am
- utils/rtcd/Makefile.am
- win32/OpenRTM-aist/coil/Makefile.am
- win32/OpenRTM-aist/Makefile.am
- win32/OpenRTM-aist/etc/Makefile.am
- win32/OpenRTM-aist/examples/USBCamera/Makefile.am
- examples/SeqIO/Makefile.am
- examples/SimpleIO/Makefile.am
- examples/Composite/Makefile.am
- examples/ExtTrigger/Makefile.am
- examples/ConfigSample/Makefile.am
- examples/AutoTest/Makefile.am
- examples/SimpleService/Makefile.am
- win32/OpenRTM-aist/installer/OpenRTM-aist.wxs.in
- build/slntool.py
- src/lib/coil/build/slntool.py
- src/lib/rtm/idl/libRTCSkel.vcproj.yaml
- src/lib/rtm/libRTC.vcproj.yaml
- src/lib/coil/win32/coil/libcoil.vcproj.yaml
- utils/rtcprof/rtcprof.yaml
- utils/rtcd/rtcd.yaml
- examples/rtcdll.vcproj.yaml
- examples/rtc.vcproj.yaml
- src/lib/coil/build/vcxprojtool.py
- src/lib/coil/win32/coil_distbuild.props
- src/lib/coil/win32/coil_config.props
- build/vcxprojtool.py
- win32/OpenRTM-aist/autobuild_vc10.bat
- win32/OpenRTM-aist/rtm_distbuild.props
- win32/OpenRTM-aist/installer/VC10msm_inc.wxs
- win32/OpenRTM-aist/etc/rtm_config_omni414.props
- win32/OpenRTM-aist/examples/USBCamera/user_config.props
- src/lib/rtm/SystemLogger.cpp
#ifndef snprintf #define snprintf _snprintf #endif
??¶
rtm_config.prop で rtm_dllver¶
- rtm_config.prop で rtm_dllver を記述しているが、configure.ac の AC_INIT(OpenRTM-aist, 1.1.0, n-ando@aist.go.jp, OpenRTM-aist)
と同期をとる必要があるのか?
VC2010用OpenCV-RTC群¶