DLL Normal wchar_t*

[文字列 Message] Leng=11

CLI Normal Mode で wchar_t* を受ける関数を DLL に登録します。

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

Normal DLL の作成

  1. CLI の Normal Mode で wchar_t* を受けて表示する関数 CharMsg() を DLL に登録します。
    Visual Studio .NET を起動して「空の CLR プロジェクト」を選択します。
    Char.h と Char.cpp をフォルダーに格納してプロジェクトに組み込みます。
  2. Char.h のソースコードです。
    // Char.h
    extern "C"
    {
        __declspec(dllexport) void  CharMsg(wchar_t *msg);
    }
    
  3. Char.cpp のソースコードです。
    C# では Unicode が標準なので、CLI では wchar_t を使います。
    wchar_t で全角文字を表示するときは setlocale() を設定します。
    詳細は Unicode で全角文字を使用 を参照して下さい。
    //Char.cpp
    #include <stdio.h>
    #include <string.h>
    #include <locale.h>
    #include "Char.h"
    
    void  CharMsg(wchar_t *msg)
    {
        setlocale(LC_ALL, "japanese");
        wprintf(L"[%s] Leng=%d", msg,wcslen(msg));
    }
    
  4. プロジェクトのプロパティで[構成プロパティ][全般ページ]から構成の種類をダイナミックライブラリ(.dll)に設定します。
    文字セットは「Unicode 文字セットを使用する」です。

  5. ソリューションのビルドを実行すると Debug のフォルダに DLL と LIB が作成されます。
    デバッグが済めば Release Mode でコンパイルして下さい。
  6. ここで作成した DLL を C# から呼び出すことが出来ます。
    C# からポインターを渡すときは unsafe や fixed の設定が必要です。
    C#⇒CLI/CharMsg DLL を参照して下さい。

DLL を使う

  1. Visual Studio .NET を起動して「空の CLR プロジェクト」を選択します。
    プロジェクトのフォルダーに DLL, LIB, Char.h, Main.cpp を格納します。
  2. Main.cpp のソースコードです。
    #pragma で "Dll.lib" をプロジェクトに組み込んでいます。
    CharMsg() に渡す文字列は Unicode に設定して下さい。
    // Main.cpp
    #include <stdio.h>
    #include <conio.h>
    #include "Char.h"
    #pragma comment(lib,"Dll.lib")
    
    int main(void)
    {
        CharMsg(L"文字列 Message");
        _getch();
        return 0;
    }
    
  3. プロジェクトを実行すると次のメッセージが表示されます。
    [文字列 Message] Leng=11

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