当前位置: 代码迷 >> VC >> c++/cli类型转换的有关问题
  详细解决方案

c++/cli类型转换的有关问题

热度:6056   发布时间:2013-02-25 00:00:00.0
c++/cli类型转换的问题
本帖最后由 sfwork 于 2012-10-13 10:14:43 编辑 最近在做一个C#和c++/cli混合编程的项目,在c#内部能正常运行的代码,在c++/cli里就报异常了,下面是c#代码:


        public ORF_R04 ORF_R04_Parse(String message)
        {
            NHapi.Base.Parser.PipeParser Parser = new NHapi.Base.Parser.PipeParser();
            NHapi.Base.Model.IMessage m = Parser.Parse(message);
            //ORF_R04 orfr04 = m as ORF_R04;
            ORF_R04 orfr04 = new ORF_R04();
            
            orfr04 = (ORF_R04)m;
            //orfr04 = m as ORF_R04;
            return orfr04;
        }


在c++/cli调用的代码:

     NHapi::Model::V24::Parser::MsgParser ^msgParser;
      ORF_R04 ^orfr04 = msgParser->ORF_R04_Parse(message);

程序执行到
ORF_R04 ^orfr04 = msgParser->ORF_R04_Parse(message);
就报异常了。下面是异常界面:

哪位大神可以帮忙解决下,小弟感激不尽!
------解决方案--------------------------------------------------------
提示明显是类型不能被转换
------解决方案--------------------------------------------------------
你确定C++/CLI和C#代码里传入的message都是一样的而只有C++/CLI出错了?
------解决方案--------------------------------------------------------
引用:
提示明显是类型不能被转换


我也清楚是类型不能转换啊。在c#内部是可以调用的,跨语言到c++/cli就不行了。
------解决方案--------------------------------------------------------
引用:
你确定C++/CLI和C#代码里传入的message都是一样的而只有C++/CLI出错了?


跟参数message没有关系的,问题是类型转换出错了
------解决方案--------------------------------------------------------
根据参数的不同 Parser.Parse(message) 返回不同类型的对象也是有可能的,在没有控制单一条件下,将错误归结为语言问题是非常武断的。
  相关解决方案