アセンブリ

assembly 最も簡単に言えば、アセンブリとは、C++/CLIコンパイラがはいた最終成果物である、exeやdllです。 .NETプログラミングでは、あるDLLアセンブリに存在する型を他のEXEアセンブリが容易に利用できるようになっています。ここではまず、DLLアセンブリを作成し、それをEXEアセンブリから利用します。

まず、DLLアセンブリdllasem.dllを作成します。

// dllasem.h
#pragma once
using namespace System;
namespace DllasemNS {
    public ref class DllasemCLASS
    {
        int a;
        int b;
        int c;
    public:
        DllasemCLASS(int a, int b, int c) {
            this->a = a;
            this->b = b;
            this->c = c;
        }
        int getA() {return a;}
        int getB() {return b;}
        int getC() {return c;}
        int getALL() { return a+b+c; }
    };
}

上記のコードで注目すべきところは、クラスDllasemCLASSがpublicとして定義されているところです、C++ではこのような構文はありませんが、publicとするとこのクラスが他のアセンブリ内から利用可能であることを示します。デフォルトはprivateです。

次にこのDLLを利用するEXEを作成します。

// exeasem.cpp : メイン プロジェクト ファイルです。
#include "stdafx.h"
using namespace System;
#using <dllasem.dll>
using namespace DllasemNS;
int main(array<System::String ^> ^args)
{
 
    DllasemCLASS^ dllclass = gcnew DllasemCLASS(2,3,4);
    int a = dllclass->getA();
    int b = dllclass->getB();
    int c = dllclass->getC();
    int all = dllclass->getALL();
    return 0;
}

上記の作業によって、#usingの検索パスが追加されます。

以上で、exeasem.exeからdllasem.dllが利用できます。以上の作業で注意すべきは、exeasem.exeはビルドするときも、実行時もdllasem.dllが見えていなければならない、ということです。