C++ マネージ拡張でのクライアント
C++ マネージ拡張でクライアントがどのように記述されるかを次に示します。
リスト 1. C++ マネージ拡張でのクライアント (ClientVC.cpp)
#using <mscorlib.dll>
using namespace System;
#using "..\Bin\CompCS.dll"
#using "..\Bin\CompVC.dll"
#using "..\Bin\CompVB.dll"
// The method, main, is the application's entry point.
void main() {
// Iterate through the component's strings,
// and write them to the console.
CompCS::StringComponent* myCSStringComp =
new CompCS::StringComponent();
Console::WriteLine
(L"Strings from C# StringComponent");
for (int index = 0; index < myCSStringComp->Count;
index++) {
Console::WriteLine(myCSStringComp->
GetString(index));
}
// Iterate through the component's strings,
// and write them to the console.
CompVC::StringComponent* myVCStringComp =
new CompVC::StringComponent();
Console::WriteLine
(L"\nStrings from Visual C++ StringComponent");
for (int index = 0; index < myVCStringComp->Count;
index++) {
Console::WriteLine(myVCStringComp->
GetString(index));
}
// Iterate through the component's strings,
// and write them to the console.
CompVB::StringComponent* myVBStringComp =
new CompVB::StringComponent();
Console::WriteLine(L"\nStrings from Visual Basic
StringComponent");
for (int index = 0; index < myVBStringComp->Count;
index++) {
Console::WriteLine(myVBStringComp->
GetString(index));
}
}
ここで、まず注目する必要があるのは、適切な ..\Bin サブディレクトリに格納されている 3 つのコンポーネントをそれぞれインポートしていることです。
#using "..\Bin\CompCS.dll"
#using "..\Bin\CompVC.dll"
#using "..\Bin\CompVB.dll"
3 つの文字列コンポーネントを呼び出すクライアント コードの各セクションは、使用するライブラリの指定を除けば、すべて同じです。3 つの各セクションの最初のステートメントは、型 StringComponent (コンポーネントで定義される) の新しいローカル変数を宣言し、宣言した変数を初期化し、そのコンストラクタを呼び出しています。
CompCS::StringComponent* myCSStringComp =
new CompCS::StringComponent();
クライアントは、文字列をコンソールに書き込み、プログラムのこの部分が入力済みであることを示した後に、Count プロパティの値を使用して適切な文字列コンポーネントのメンバを反復処理します。
for (int index = 0; index < myCSStringComp->Count;
index++) {
Console::WriteLine(myCSStringComp->
GetString(index));
}
以上で必要な処理はすべて完了し、他の 2 つの言語コンポーネントに対しても同じことが繰り返されます。
**メモ **個別の GetString メソッドではなく、インデクサを使用する場合は、通常は
myCSStringComp[index]
呼び出し元コードを使用します。
新しい C++ マネージ拡張クライアントのビルドは非常に簡単です。
cl.exe /clr /Zi /c ClientVC.cpp
link.exe /debug /nod:libcpmt.lib
kernel32.lib mscoree.lib
/out:..\bin\ClientVC.exe ClientVC.obj
前述の C++ マネージ拡張の例と同様に、共通言語ランタイムのマネージ コードを作成するようにコンパイラに指示するには /clr スイッチが必要です。生成されたプログラムを実行すると、次の出力が生成されます。
C:\...\CompTest\Bin>clientvc
Strings from C# StringComponent
C# String 0
C# String 1
C# String 2
C# String 3
Strings from Visual C++ StringComponent
Visual C++ String 0
Visual C++ String 1
Visual C++ String 2
Visual C++ String 3
Strings from Visual Basic StringComponent
Visual Basic String 0
Visual Basic String 1
Visual Basic String 2
Visual Basic String 3
参照
Visual C# でのクライアント | Visual Basic でのクライアント | Windows フォームを使用する Windows クライアント | ASP.NET を使用するクライアント | 開発チュートリアルのまとめ | 付録 A: 名前空間を検索するためのツール