用C#写的COM供C++调用,在不同的电脑上运行,有的正常,有的会报错,系统都是win7 32位。
报错信息如下:
System.Exception {System.Reflection.TargetException}
+ [System.Reflection.TargetException] {"Object does not match target type."} System.Reflection.TargetException
+ Data {System.Collections.ListDictionaryInternal} System.Collections.IDictionary {System.Collections.ListDictionaryInternal}
Message "Object does not match target type."
Source "mscorlib" string
StackTrace "   at System.RuntimeType.InvokeDispMethod(String name, BindingFlags invokeAttr, Object target, Object[] args, Boolean[] byrefModifiers, Int32 culture, String[] namedParameters)\r\n   at System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams)\r\n   at System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Int32[] aWrapperTypes, MessageData& msgData)\r\n   at Client1.IOleTestEvents.OnNewData(Object NewData)\r\n   at Client1.OleTest.NewData(String[] NewData) in d:\\source code\\Centurion\\Main\\Source\\Libraries\\OpenApps\\KicClient\\KicClient.cs:line 547"。求助!!!

解决方案 »

  1.   

    应该是跟framework的版本有关系吧
      

  2.   

    版本都是4.5,但是我发现mscorlib.dll这个文件不一样,不知道是什么原因。我也替换过这个文件,但是还是一样报错。
      

  3.   

    Object does not match target type对一下参数,如果有时间日期你tongstring传的话,注意一下区域信息。
      

  4.   

            public event DelNewData OnNewData;
            public void NewData(object NewData)
            {
                try
                {
                    if (OnNewData != null)
                    {
                        OnNewData(NewData);
                    }
                }
                catch (Exception ex)
                {
                    System.Diagnostics.Debug.Print(ex.ToString());
                }
            }NewData原本是string[],在传入委托函数前已经转成object。
      

  5.   

    数据类型问题,接受的类型是字符型的,你给了一个object类型,可能会报错!有的机器好用的原因是他默认帮你把object类型转成了字符型
      

  6.   

    谢谢回复。C++中的const Variant&是字符类型吗,要怎么修改呢?
      

  7.   

    传入的时候把NewData在强转会string[]试试。