.NETプラットフォームは、対応するパラメータを呼び出しの

 具体的な公式の対応を参照してください。<----こちらをクリック

良い記事を伴う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)。
  *  
  *  
  * /

 

おすすめ

転載: www.cnblogs.com/xietianjiao/p/11599484.html