CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

C#调用BCB写的dll不成功

楼主Roior(Roior)2006-03-23 17:57:38 在 .NET技术 / C# 提问

BCB中的DLL是这样写的  
  int   WINAPI   DllEntryPoint(HINSTANCE   hinst,   unsigned   long   reason,   void*   lpReserved)  
  {  
                  return   1;  
  }  
  //---------------------------------------------------------------------------  
  extern   "C"   __declspec(dllexport)   __stdcall   AnsiString   PlayVoice(AnsiString   playStr);//导出函数  
   
   
  AnsiString   __stdcall   PlayVoice(AnsiString   playStr)  
  {  
          AnsiString   result="播放失败";  
          CoInitialize(NULL);  
          TSpVoice   *SpVoice1;  
          SpVoice1=new   TSpVoice(NULL);  
   
          SpeechVoiceSpeakFlags       spFlags=SVSFlagsAsync;  
   
          wchar_t   *   sptxt=new   wchar_t();  
          try  
          {  
                  AnsiString   s=playStr;  
                  sptxt=s.WideChar(sptxt,s.WideCharBufSize());  
                  Sleep(100);  
                  SpVoice1->Speak(sptxt,spFlags);  
                  SpVoice1->WaitUntilDone(1000*120);  
                  result="播放成功";  
                  CoUninitialize();  
          }  
          catch(Exception   &E)  
          {  
                  result="播放失败"+E.Message;  
                  delete   sptxt;  
                  return   result;  
          }  
          return   result;  
  }  
  然后在c#中调用  
  [DllImport("SpeechDll.dll",EntryPoint="PlayVoice",SetLastError=true,      
    CharSet=CharSet.Ansi,   ExactSpelling=true,      
    CallingConvention=CallingConvention.StdCall)]      
  public   static   extern   string   PlayVoice(string   playstr);      
  private   void   button1_Click(object   sender,   System.EventArgs   e)  
  {  
          PlayVoice("sdf");  
  }  
  调用时老提示  
  未处理的“System.NullReferenceException”类型的异常出现在   WindowsApplication1.exe   中。  
   
  其他信息:   未将对象引用设置到对象的实例。  
  问题点数:20、回复次数:1Top

1 楼Knight94(愚翁)回复于 2006-03-23 19:03:02 得分 20

把参数中  
  string   =>   StringBuilder  
  即string   playstr   改为StringBuilder  
   
  调用的时候,要记得给StringBuilder初始化,参看msdnTop

相关问题

  • vb调用C写的DLL
  • C#调用DLL的问题
  • C#调用Dll的问题
  • C#调用DLL的问题
  • c++如何调用c写的dll??
  • vb.net 怎样调用delphi dll (这个dll C#可以调用的)
  • C调用C#?
  • delphi调用c的dll问题,急!!!
  • 简单调用DLL函数C++ Builder !
  • java中如何调用c写的dll?

关键词

  • c#
  • sptxt
  • spvoice1
  • playstr
  • 调用
  • playvoice
  • ansistring
  • 播放
  • stringbuilder
  • result

得分解答快速导航

  • 帖主:Roior
  • Knight94

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo