DLL Normal Class

CLI Normal Mode で Class を DLL に登録します。

前田稔(Maeda Minoru)の超初心者のプログラム入門

Normal DLL の作成

  1. CLI Normal Mode(CLR プロジェクト)にはClassも関数も登録可能ですが、今回は Class を登録します。
    空のプロジェクトからシンプルなプロジェクトを作成します。
    Visual Studio .NET を起動して「空の CLR プロジェクト」を選択します。
    プロジェクト名は Dll にして下さい。

  2. Hello.h と Hello.cpp をプロジェクトのフォルダーに格納します。
    Hello.h のソースコードです。
    Class1 のメンバー関数として MsgPrint() を定義しています。
    // Hello.h
    #pragma once
    using namespace System;
    
    public class Class1
    {
      public:
        void MsgPrint();
    };
    
    Hello.cpp のソースコードです。
    //Hello.cpp
    #include "Hello.h"
    
    void Class1::MsgPrint()
    {
        Console::WriteLine(L"CLI Normal Hello DLL");
    }
    
  3. プロジェクトのプロパティで[構成プロパティ][全般ページ]から構成の種類をダイナミックライブラリ(.dll)に設定します。
    文字セットは「Unicode 文字セットを使用する」です。

    ソリューションのビルドを実行すると Debug のフォルダに DLL が作成されます。
  4. ref mode では DLL が作成出来たら OK ですが、normal mode では LIB が必要です。
    構成の種類をスタティックライブラリ(.lib)に設定します。
    ソリューションのビルドを実行すると Dll.dll に続いて Dll.lib が作成されます。
    デバッグが済めば Release Mode でコンパイルして下さい。

DLL を使う

  1. 空のプロジェクトからシンプルな Console Mode のプロジェクトを作成します。
    Visual Studio .NET を起動して「空の CLR プロジェクト」を選択します。
    プロジェクトの名前は Main にして下さい。

  2. プロジェクトのフォルダーに Dll.dll, Dll.lib, Hello.h, Main.cpp を格納します。
    Main.cpp のソースコードです。
    #include で "Hello.h" を指定して、#pragma で "Dll.lib" を組み込みます。
    Class1 のメンバー関数として MsgPrint() が定義されています。
    // Main.cpp
    #include "Hello.h"
    using namespace System;
    #pragma comment(lib,"Dll.lib")
    
    int main()
    {
        Class1  *cls = new Class1();
        cls->MsgPrint();
        System::Console::ReadLine();
        return 0;
    }
    
  3. プロジェクトを実行すると "CLI Normal Hello DLL" が表示されます。
    Dll.lib はコンパイルするときにだけ参照されます。
    他のフォルダーにプログラムを移すときは *.exe と *.dll をコピーして下さい。

超初心者のプログラム入門(C/C++)