using System.Runtime.InteropServices; // 用 DllImport 需用此 命名空间
using System.Reflection; // 使用 Assembly 类需用此 命名空间
using System.Reflection.Emit; // 使用 ILGenerator 需用此 命名空间
private IntPtr hModule = IntPtr.Zero;
[DllImport("kernel32.dll")]
static extern IntPtr LoadLibrary(string lpFileName); //Loadlibrary 返回的函数库模块的句柄
[DllImport("kernel32.dll")]
static extern IntPtr GetProcAddress(IntPtr hModule, string lpProcName);
[DllImport("kernel32", EntryPoint = "FreeLibrary", SetLastError = true)]
static extern bool FreeLibrary(IntPtr hModule);
[DllImport("***.dll", CharSet = CharSet.Unicode, EntryPoint = "Init", CallingConvention = CallingConvention.Cdecl)]
public static extern int Init(System.Int32 size);
C++ ==> C#
const int System.Int32
int System.Int32
char* & ref StringBuilder
double * & [MarshalAs(UnmanagedType.LPArray, SizeConst = 1024 * 1024)] ref double[]
int & ref System.Int32
const char * byte[]
double& [MarshalAs(UnmanagedType.LPArray, SizeConst = 101)]ref double[]