C#⇒DLL(CharMsg)

[文字列 Message] Leng=11

C# から C/C++ のポインター引数を持つ DLL の関数 CharMsg(wchar_t*) を呼び出します。
C# でポインタを使うときは unsafe の設定が必要です。
また char 配列のポインタを渡すときは fixed(char* pt= msg) を使います。

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

プロジェクトの説明

  1. C/C++ で作成した DLL の関数 CharMsg(wchar_t*)を C# から呼び出します。
    呼び出される DLL の作成方法は DLL Normal wchar_t* を参照して下さい。
  2. 「空のプロジェクト」から作成して DLL を格納します。
    Console.cs を格納してプロジェクトに組み込んで下さい。
  3. Console.cs のソースコードです。
    [DllImport()] と static extern で関数のエントリーアドレスを取得します。
    CharMsg() 関数はポインタを使うので unsafe を設定します。
    また char 配列のポインタを渡すときは fixed(char* pt= msg) を使います。
    詳細は 配列のポインタ を参照して下さい。
    /*★ C# から CharMsg(char *msg) を呼び出す    前田 稔 ★*/
    //Console.cs 
    using System; 
    using System.Collections.Generic; 
    using System.Runtime.InteropServices; 
    using System.Text; 
    
    class console
    {
        [DllImport("Dll.dll")]
        static extern unsafe void CharMsg(char* msg);
        unsafe public static int Main()
        {
            char[] msg = "文字列 Message".ToCharArray();
            fixed(char* pt= msg)
            {   CharMsg(pt);
            }
            Console.ReadLine();
            return 0;
        } 
    } 
    
  4. Visual Studio .NET を起動します。
    ソリューション・エクスプローラで「参照設定」を右クリックし「参照の追加」を選択します。
    参照の追加から[参照]タグを選び DLL を組み込みます。

  5. [プロジェクト(P)][Console のプロパティ(P)][ビルド][プラットホームターゲット(G)] から「x86」を選択します。
    これは C/C++ で作成した DLL が32ビットモードなので、これに合わせる為です。
  6. プロジェクトを実行すると次のメッセージが表示されます。
    [文字列 Message] Leng=11

超初心者のプログラム入門(C# Frame Work)