具体的な公式の対応を参照してください。<----こちらをクリック
良い記事を伴うC#とC ++の相互運用性、私はジャンプを指します
範囲内の// C ++関数プロトタイプDLL
//のextern "C" __declspec(DLLEXPORT BOOL) メソッド名(CONST文字*変数名1、unsigned char型*変数名2)
//のextern "C" __declspec(DLLEXPORT )ブール方法2(定数はunsigned char *変数名1、CHAR *変数名2)名前
DLLは、すべてのデータ型変換の道を収集している呼び出すために// C#C ++を、あなたのテストはどのくらい、繰り返しまたは様々なプログラムがあるかもしれません
HANDLE:// C ++ (void *型)---- C#の:System.IntPtr
// C ++:バイト(unsigned char型)---- C#の:System.Byte
// C ++:SHORT(ショート)---- C#の:のSystem.Int16
// C ++:WORD(符号なしshort)---- C#の:System.UInt16
// C ++:int型(int型)---- C#:のSystem.Int16
// C ++:int型(int型)---- C#:可能System.Int32
C ++ //:UINT(unsigned int型)---- C#:System.UInt16
// C ++:UINT(unsigned int型)---- C#:可能System.UInt32
// C ++:LONG(ロング)---- C#の:可能System.Int32
// C ++:ULONG(unsigned long型)---- C#の:可能System.UInt32
// C ++:DWORD(unsigned long型)---- C#の:可能System.UInt32
// C ++:DECIMAL ---- C#の:System.Decimalの
// C ++:BOOL(ロング)---- C#の:可能System.Boolean
// C ++:CHAR(文字)---- C#の:のSystem.Char
// C ++:LPSTR(CHAR *)---- C#:システム.String
// C ++:LPWSTR(wchar_t型*)---- C#の:可能System.String
// C ++:LPCSTR(定数文字*)---- C#の:可能System.String
// C ++:LPCWSTR(定数はwchar_t *) - --- C#の:可能System.String
// C ++:PCAHR(CHAR *)---- C#の:可能System.String
// C ++:BSTR ---- C#:可能System.String
// C ++:FLOAT(フロート) - - C#の:System.Single
// C ++:DOUBLE(ダブル)---- C#の:System.Double
// C ++:VARIANT ---- C#の:System.Objectの
C ++ //:PBYTE(バイト*)---- C#の:System.Byte []
// C ++:BSTR ---- C#の:StringBuilderの
// C ++:LPCTSTR ---- C#:StringBuilderの
// C ++:LPCTSTR - C#---:文字列
// C ++:LPTSTR ---- C#:[MarshalAs(UnmanagedType.LPTStr)]文字列
// C ++:LPTSTR出力変数名---- C#の:StringBuilderの出力変数名
// C ++:LPCWSTR - C#---:のIntPtr
// C ++:BOOL ---- C#:BOOL
// C ++:HMODULE ---- C#の:のIntPtr
// C ++:HINSTANCE ---- C#の:のIntPtr
// C ++:構造- - C#の:パブリック構造体構造{};
// C ++:変数名構造** ---- C#の:の構成例では、事前に述べた変数名アウト変数名// C#の
構造:// C ++ボディ&変数名---- C#の:参照構造変数名
// C ++:WORD ---- C#の:USHORT
// C ++:DWORD ---- C#の:UINT
// C ++:DWORD ---- C#の: int型
// C ++:C#UCHAR ----:int型
C ++ //:UCHAR ---- C#:バイト
// C ++:UCHAR * ---- C#の:文字列
// C ++:UCHAR * ---- C#の:のIntPtr
// C ++:---- C#ののGUID:のGuid
C ++ //:ハンドル---- C#の:のIntPtr
// C ++:HWND ---- C#の:のIntPtr
// C ++:DWORD ---- C#の:int型
COLORREF ---- C#:UINT // C ++
// C ++:C#---- unsigned char型:バイト
// C ++:unsigned char型* ---- C#のは:refバイト
// C ++:unsigned char型* ---- C#の:[MarshalAs(UnmanagedType.LPArray)]バイト[]
C ++ //:unsigned char型* ---- C#の:[MarshalAs(UnmanagedType.LPArray)]のIntPtr
// C ++:unsigned char型---- C#の&は:refバイト
// C ++:unsigned char型変数名---- C# :バイト変数名
// C ++:符号なしshort変数名---- C#の:変数名USHORT
// C ++:unsigned int型変数名---- C#の:がuint変数名
// C ++:unsigned long型変数名---- C#の:ULONG変数名
// C ++:変数名---- C#の文字:文字で、1バイト文字でバイト変数名// C ++をC#の2バイト
// C ++:char配列名[配列サイズ] ---- C#:MarshalAs(UnmanagedType.ByValTStr 、SizeConst = アレイサイズ)]パブリック文字列配列名; USHORT
// C ++:CHAR * ---- C#の:文字列//パラメータを渡す
// C ++ます。char * ---- Cの #:StringBuilderの// 送信パラメータ
// C ++ます。char *変数名---- C#の:refの文字列変数名
// C ++ます。char *変数名を入力してください---- C#の:文字列の入力変数名
// C ++ます。char *出力変数名---- C#の:[MarshalAs(UnmanagedType.LPStr )] StringBuilderの出力変数名
// C ++ます。char ** --- - C#:文字列
// C ++ます。char **変数名---- C#の:refの文字列変数名
// C ++:のconstのchar * ---- C#の:文字列
// C ++:char型[] ---- C#の:弦
// C ++:変数名[配列サイズ] ---- C#の文字:[MarshalAs( UnmanagedType.ByValTStr、SizeConst = アレイサイズ)]パブリック文字列変数名;
// C ++:構造体変数名構造名* ---- C#の:構造変数名の参照名
// C ++:変数名を委任---- C#の:委任変数名
// C ++:int型---- C#:int型
// C ++:int型---- C#は:ref int型
/ / C ++:int型&#---- C:REFのint
// C ++:int型* ---- C#の:0 =に// C#のint型変数名を呼び出す前に定義することREFのint;
// C ++:int型* --- - C#の:のIntPtr
// C ++:のInt32 PIPTR * ---- C#の:のInt32 []は
// C ++:PIPTR * ---- C#のフロート:フロート[]
// C ++:ダブル**配列名---- C# :ref double配列名
// C ++:ダブル* []配列名---- C#のは:ref double配列名
// C ++:ロング---- C#の:INT
// C ++:ULONG ---- C#:int型
/ / C ++:UINT8 * ---- Cの #:REFバイト// C#は新しい新しいバイトのバイト変数名=()を呼び出す前に定義する必要があります;
// C ++:---- C#のハンドル:のIntPtrを
// C ++:HWND ---- C#:のIntPtr
// C ++ます。void * ---- C#の:のIntPtr
// C ++ます。void * user_obj_param ---- C#:のIntPtr user_obj_param
// C ++ます。void *对象名称- - C#:([MarshalAs(UnmanagedType.AsAny)]オブジェクト对象名称
// C ++:チャー、INT8、SBYTE、CHAR ---- C番号:System.SByte
// C ++:短い、短いint型、INT16、SHORT - - C#の:のSystem.Int16
// C ++:int型、長い、長いint型、INT32、LONG32、BOOL、INT ---- C#:可能System.Int32
// C ++:__ int64型、INT64、LONGLONG ---- C#の:システム.Int64
// C ++:unsigned char型、UINT8、UCHAR、BYTE ---- C#の:System.Byte
// C ++:符号なしshort、UINT16、USHORT、WORD、ATOM、WCHAR、__wchar_t ---- C#:System.UInt16
// C ++:符号なし、unsigned int型、UINT32、ULONG32、DWORD32、ULONG、DWORD、UINT ---- C#:可能System.UInt32
C ++ //:符号なし__int64、UINT64、DWORDLONG、ULONGLONG ---- C#の:System.UInt64
// C ++:フロート、FLOAT ---- C#の:System.Single
// C ++:ダブル、ダブルロング、DOUBLE --- - C#の:System.Double
// Win32のCLR型タイプ----
//構造体構造体C#で再定義する必要
//コールバックコールバック関数は、デリゲートにカプセル化する必要があり、デリゲート静的にextern int型のFunCallBack(文字列STR);
/ / unsigned char型**はppImageがppImageのIntPtr置き換え
// int型&nWidth nWidthは、REF int型に交換
可能なREF int型に対応し、// int型*、INT&
//針型パラメータすることができますのIntPtr REF指し
//関数ポインタのC ++ :typedefは((* fun_type1)ダブルダブル); C#2に対応する:パブリックデリゲートダブルfun_type1を(ダブル);
// charは、オペレーティング・C ++ *:CHAR *;は、C#に対応:StringBuilderの;
// C#は、ポインタを使用して:必要性をポインタを使用します地元プラス安全ではない
// unsigned char型のバイトは、公衆に対応します
* /
*のtypedef無効(* CALLBACKFUN1W)(wchar_t型*、void *型PARG)。
*のtypedef無効(* CALLBACKFUN1A)(char型*、void *型PARG)。
* BOOL BIOPRINT_SENSOR_API dllFun1(CALLBACKFUN1 pCallbackFun1、void *型PARG)。
*调用方式为
* [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
*パブリックデリゲート無効CallbackFunc1([MarshalAs(UnmanagedType.LPWStr)]のStringBuilder STRNAME、のIntPtr PARG)。
*
*
* /