VC中Dll的函数定义如下:
char* GetSplitedWords(HANDLE hHandle , int i)
{
  char* sWord;
  SHLSegWord* pWord; //一个结构体
  pWord = HLGetWordAt(hHandle,i); //注:海量分词函数,在另一dll中
  sWord = pWord->s_szWord; //s_szWord为字符串(char*)
  return sWord;
}
C#中调用定义:
[DllImport("Split.dll",CharSet = CharSet.Ansi,
 CallingConvention=CallingConvention.Cdecl)]
 static extern StringBuilder GetSplitedWords(IntPtr hHandle,int i);
//以下是C#函数定义部分
public  string  GetWords(string strText)
{
  StringBuilder sResult = new StringBuilder();
  ……
  for(int i=0;i<wordCnt;i++)
  {
    StringBuilder sTmp = GetSplitedWords(m_Handle,i);
    sResult.Append(sTmp);
    sResult.Append('/');
  }
  return sResult.ToString();
}
执行结果:有些文本(strText)能正常执行,有些执行过程中出现"未将对象引用设置到对象的实例"错误。例如,strText="我爱北京天安门。"可以正确执行,strText="我爱北京天安门,天安门上太阳升。"就会出现错误。
需要说明的是,上述定义在VC中调用一切正常。另外,如果将VC函数定义中的返回值改为空字符串,并加入MessageBox()测试,测试结果正常,即将VC定义中的最后两句改为:
MessageBox(NULL,sWord,"Test",MB_OK);
return "";