[openrtm-users 00650] dll用VC++プロジェクト生成について

4 個の投稿 / 0 new
最終投稿
root
オフライン
Last seen: 5時間 51分 前
登録日: 2009-06-23 14:31
[openrtm-users 00650] dll用VC++プロジェクト生成について

産総研 知能システム研究部門 ヒューマノイド研究グループ
にてお世話になっております俵です。

Windows版のOpenRTM-aist-0.4.2-RELEASEのrtc-templateで
dll用のVC++プロジェクトを生成する方法についてご教授願います。

具体例として
http://www.openrtp.jp/openhrp3/jp/controller_pd.html
にある「プログラミング 」「SamplePD.h 」の項目のような初期化関数
SamplePDInit
をエクスポートしたdllプロジェクトを作成したいのですが、現状rtc-template
を用いてそのようなプロジェクトは自動生成可能でしょうか。
以上です。
よろしくお願いします。

未定義
root
オフライン
Last seen: 5時間 51分 前
登録日: 2009-06-23 14:31
[openrtm-users 00651] dll用VC++プロジェクト生成について

俵様

産総研 安藤です

お世話になっております。

> 産総研 知能システム研究部門 ヒューマノイド研究グループ
> にてお世話になっております俵です。
>
> Windows版のOpenRTM-aist-0.4.2-RELEASEのrtc-templateで
> dll用のVC++プロジェクトを生成する方法についてご教授願います。
>
> 具体例として
> http://www.openrtp.jp/openhrp3/jp/controller_pd.html
> にある「プログラミング 」「SamplePD.h 」の項目のような初期化関数
> SamplePDInit
> をエクスポートしたdllプロジェクトを作成したいのですが、現状rtc-template
> を用いてそのようなプロジェクトは自動生成可能でしょうか。
> 以上です。
> よろしくお願いします。

rtc-templateは0.4.2から実行ファイル用vcprojとDLL用vcproj、
それからそれらを統合するslnを生成します。

コンポーネント名 Sample としてrtc-templateでコードを生成すると、
Sample_vc[8|9].sln: ソリューションファイル
Sample_vc[8|9].vcproj: DLL用プロジェクトファイル
SampleComp_vc[8|9].vcproj: EXE用プロジェクトファイル
というファイルが生成されますので、slnをダブルクリックしてソリューション
を開いてください。DLLを作成する場合はSampleというプロジェクトをビルドしてください。

ただし、生成されるコードにはWindows用のコードとして一つまずい点があって、
DLLの初期化関数のexportがされていません。

Sample.h 内の
extern "C"
{
void SampleInit(RTC::Manager* manager);
};

extern "C"
{
DLL_EXPORT void SampleInit(RTC::Manager* manager);
};

に書き換えてからコンパイルするようお願いします。
DLL_EXPORTはRTC.hかどこかで定義されているマクロで、
Linuxでコンパイルしても副作用は出ないようになっています。

作成したDLLコンポーネントは、付属のrtcdコマンドでロードして
実行することができます。
以下のようなrtc.confをDLLと同じディレクトリに作成してください。

root
オフライン
Last seen: 5時間 51分 前
登録日: 2009-06-23 14:31
[openrtm-users 00660] dll用VC++プロジェクト生成について

安藤様

丁寧な回答ありがとうございます。

さらに質問ですが、今後Windows環境でrtc-templateが自動的に
初期化関数をDLL_EXPORTで修飾する予定はありますか?
あらかじめrtc-templateで修飾しても支障がないように
思えますがどうでしょうか?

以上です。
よろしくお願いします。

Ando Noriaki wrote 2008/11/17 15:49:
> 俵様
>
> 産総研 安藤です
>
> お世話になっております。
>
>> 産総研 知能システム研究部門 ヒューマノイド研究グループ
>> にてお世話になっております俵です。
>>
>> Windows版のOpenRTM-aist-0.4.2-RELEASEのrtc-templateで
>> dll用のVC++プロジェクトを生成する方法についてご教授願います。
>>
>> 具体例として
>> http://www.openrtp.jp/openhrp3/jp/controller_pd.html
>> にある「プログラミング 」「SamplePD.h 」の項目のような初期化関数
>> SamplePDInit
>> をエクスポートしたdllプロジェクトを作成したいのですが、現状rtc-template
>> を用いてそのようなプロジェクトは自動生成可能でしょうか。
>> 以上です。
>> よろしくお願いします。
>
> rtc-templateは0.4.2から実行ファイル用vcprojとDLL用vcproj、
> それからそれらを統合するslnを生成します。
>
> コンポーネント名 Sample としてrtc-templateでコードを生成すると、
> Sample_vc[8|9].sln: ソリューションファイル
> Sample_vc[8|9].vcproj: DLL用プロジェクトファイル
> SampleComp_vc[8|9].vcproj: EXE用プロジェクトファイル
> というファイルが生成されますので、slnをダブルクリックしてソリューション
> を開いてください。DLLを作成する場合はSampleというプロジェクトをビルドしてください。
>
> ただし、生成されるコードにはWindows用のコードとして一つまずい点があって、
> DLLの初期化関数のexportがされていません。
>
> Sample.h 内の
> extern "C"
> {
> void SampleInit(RTC::Manager* manager);
> };
> を
> extern "C"
> {
> DLL_EXPORT void SampleInit(RTC::Manager* manager);
> };
>
> に書き換えてからコンパイルするようお願いします。
> DLL_EXPORTはRTC.hかどこかで定義されているマクロで、
> Linuxでコンパイルしても副作用は出ないようになっています。
>

root
オフライン
Last seen: 5時間 51分 前
登録日: 2009-06-23 14:31
[openrtm-users 00661] dll用VC++プロジェクト生成について

俵様

安藤です

> 丁寧な回答ありがとうございます。
>
> さらに質問ですが、今後Windows環境でrtc-templateが自動的に
> 初期化関数をDLL_EXPORTで修飾する予定はありますか?
> あらかじめrtc-templateで修飾しても支障がないように
> 思えますがどうでしょうか?

次のバージョンではそのようにしたいと思います。
とりあえず初期化関数にDLL_EXPORTを付加するようリポジトリに変更を加えました。
添付のcxx_gen.pyをインストールされているものと入れ替えてお使いください。

> 以上です。
> よろしくお願いします。
>
> Ando Noriaki wrote 2008/11/17 15:49:
>> 俵様
>>
>> 産総研 安藤です
>>
>> お世話になっております。
>>
>>> 産総研 知能システム研究部門 ヒューマノイド研究グループ
>>> にてお世話になっております俵です。
>>>
>>> Windows版のOpenRTM-aist-0.4.2-RELEASEのrtc-templateで
>>> dll用のVC++プロジェクトを生成する方法についてご教授願います。
>>>
>>> 具体例として
>>> http://www.openrtp.jp/openhrp3/jp/controller_pd.html
>>> にある「プログラミング 」「SamplePD.h 」の項目のような初期化関数
>>> SamplePDInit
>>> をエクスポートしたdllプロジェクトを作成したいのですが、現状rtc-template
>>> を用いてそのようなプロジェクトは自動生成可能でしょうか。
>>> 以上です。
>>> よろしくお願いします。
>>
>> rtc-templateは0.4.2から実行ファイル用vcprojとDLL用vcproj、
>> それからそれらを統合するslnを生成します。
>>
>> コンポーネント名 Sample としてrtc-templateでコードを生成すると、
>> Sample_vc[8|9].sln: ソリューションファイル
>> Sample_vc[8|9].vcproj: DLL用プロジェクトファイル
>> SampleComp_vc[8|9].vcproj: EXE用プロジェクトファイル
>> というファイルが生成されますので、slnをダブルクリックしてソリューション
>> を開いてください。DLLを作成する場合はSampleというプロジェクトをビルドしてください。
>>
>> ただし、生成されるコードにはWindows用のコードとして一つまずい点があって、
>> DLLの初期化関数のexportがされていません。
>>
>> Sample.h 内の
>> extern "C"
>> {
>> void SampleInit(RTC::Manager* manager);
>> };
>> を
>> extern "C"
>> {
>> DLL_EXPORT void SampleInit(RTC::Manager* manager);
>> };
>>
>> に書き換えてからコンパイルするようお願いします。
>> DLL_EXPORTはRTC.hかどこかで定義されているマクロで、
>> Linuxでコンパイルしても副作用は出ないようになっています。
>>
>
>

コメントを投稿するにはログインまたはユーザー登録を行ってください

ダウンロード

最新バージョン : 2.0.1-RELESE

統計

Webサイト統計
ユーザ数:2160
プロジェクト統計
RTコンポーネント307
RTミドルウエア35
ツール22
文書・仕様書2

Choreonoid

モーションエディタ/シミュレータ

OpenHRP3

動力学シミュレータ

OpenRTP

統合開発プラットフォーム

産総研RTC集

産総研が提供するRTC集

TORK

東京オープンソースロボティクス協会

DAQ-Middleware

ネットワーク分散環境でデータ収集用ソフトウェアを容易に構築するためのソフトウェア・フレームワーク