我现在要用C#调用一个C++的dll
C++dll源码为: /**  DBReader_getDocumentByID 通过ID号读取Docuemnt
*
* @param ID  
* @return  Document 成功
 NULL 失败
*/
DBReader_DLL const char *  DBReader_getDocumentByID(int ID);我的C#中:[DllImport("DBReader", EntryPoint = "DBReader_getDocumentByID", SetLastError = true,
        CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
    public static extern String DBReader_getDocumentByID(int ID);
但是当我执行如下代码时,程序出错:for (int i = 0; i < number; i++)
            {
                MessageBox.Show(DBReader.DBReader_getDocumentByID(i).ToString());
            }
错误报告是:尝试读取或写入受保护的内存。这通常指示其他内存已损坏
如果,我将C#改为:: public static extern byte[] DBReader_getDocumentByID(int ID);
则错误报告是:return value错误。请大家帮我看看是怎么回事,谢谢!