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