C#ATL COMを呼び出す

5695 ワード

作者:朱金燦
ソース:http://blog.csdn.net/clever101
     
C#プログラムがATLで作成したCOMコンポーネントを呼び出す方法について簡単に説明します.
 
まずATLプロジェクトを新設します.具体的には以下の通りです.
1.工事名称と経路を以下の図に記入する.
C#调用ATL COM_第1张图片
2.次の図に示すように、プロジェクトのサーバタイプをダイナミックリンクライブラリとして選択します.
C#调用ATL COM_第2张图片
3.次の図に示すATL単純オブジェクトを追加します.
C#调用ATL COM_第3张图片
4.次の図にクラス名を記入します.
C#调用ATL COM_第4张图片
5.クラスのスレッドモデルおよびその他の属性を以下の図のように選択します.
C#调用ATL COM_第5张图片
6.インタフェースクラスにメソッドを追加します.次の図です.
C#调用ATL COM_第6张图片
7.方法名及び入出力パラメータを以下の図に記入する.
C#调用ATL COM_第7张图片
8.IDLインタフェースのプロパティを設定します.ここではデフォルト設定を採用すればいいです.以下の図です.
C#调用ATL COM_第8张图片
先ほど作成したAddメソッドにコードを追加します.具体的には、次のとおりです.
STDMETHODIMP CMathCalc::Add(LONG Num1, LONG Num2, LONG* Ret)
{
	// TODO:         
    assert(NULL!=Ret);
	*Ret = Num1+Num2;

	return S_OK;
}


その後、プロジェクトをコンパイルし、dll形式のCOMを生成します.
 
第2歩C#コンソールテストプロジェクトを新規作成します.具体的には以下の通りです.
1.コンソール工事の名称と経路を以下の図に記入する.
C#调用ATL COM_第9张图片
2.次の図に示すように、新しいライブラリ参照を追加します.
C#调用ATL COM_第10张图片
3.先ほど新しく生成したCOM-MathCom 1.0タイプライブラリを選択し、以下の図に示す.
C#调用ATL COM_第11张图片
4.Program.csには、次のコードが追加されます.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MathComLib; //         

namespace TestMathCom
{
    class Program
    {
        static void Main(string[] args)
        {
            int a = 2;
            int b = 3;
            int lRetVal = 0;
            MathCalc MyMathCalc = new MathCalc();
            MyMathCalc.Add(a, b,out lRetVal); //        out   
            System.Console.Write(lRetVal.ToString());
            System.Console.WriteLine("
Press Enter to continue."); System.Console.ReadLine(); } } }

 
効果図は以下の通りです.
C#调用ATL COM_第12张图片
 
      
質問:
1.C#はCOMインタフェースを呼び出します.パラメータタイプではlongタイプではなくC#のintタイプでなければなりません.なぜですか.