Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
C#⇒DLL(CharMsg)
C#⇒DLL(CharMsg)
C# から C/C++ のポインター引数を持つ DLL の関数 CharMsg(wchar_t*) を呼び出します。
C# でポインタを使うときは unsafe の設定が必要です。
また char 配列のポインタを渡すときは fixed(char* pt= msg) を使います。
前田稔(Maeda Minoru)の超初心者のプログラム入門


プロジェクトの説明
- C/C++ で作成した DLL の関数 CharMsg(wchar_t*)を C# から呼び出します。
呼び出される DLL の作成方法は DLL Normal wchar_t* を参照して下さい。
- 「空のプロジェクト」から作成して DLL を格納します。
Console.cs を格納してプロジェクトに組み込んで下さい。
- 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;
}
}
|
- Visual Studio .NET を起動します。
ソリューション・エクスプローラで「参照設定」を右クリックし「参照の追加」を選択します。
参照の追加から[参照]タグを選び DLL を組み込みます。

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

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

※・