调用C的Dll 在C#中的写法
#ifdef __cplusplus extern "C" { #endif /* 参数: char *pStrIn[in] long lLenIn[in] char *pStrOut[out] long *lLenOut[in,out] */CS_BASEEN_API int BaseEn(char *pStrIn, long lLenIn, char *pStrOut, long *lLenOut);
[DllImport(@"BaseEn.dll")] protected static extern int BaseEn(string pStrIn, int BaudRate, ref string pStrOut, ref int lLenOut);
都是提示错误:尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
试试
[DllImport(@"BaseEn.dll",CallingConvention= CallingConvention.Cdecl)] protected static extern int BaseEn(string pStrIn, long BaudRate, string pStrOut, ref long lLenOut);
尝试读取或写入受保护的内存。这通常指示其他内存已损坏是参数传递错误
试试BaseEn(byte[],int,byte[],ref int)
[DllImport(@"BaseEn.dll")]
protected static extern int BaseEn(string pStrIn, int BaudRate, ref stringbuilder pStrOut, ref int lLenOut);