C++调用C#写的COM,在不同的电脑上运行,有的正常,有的会报错,系统都是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"。求助!!!
报错信息如下:
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"。求助!!!
public delegate void DelNewData(object NewData);
public event DelNewData OnNewData;
public void NewData(object NewData)
{
try
{
if (OnNewData != null)
{
OnNewData(NewData);
}
}
catch (Exception ex)
{
System.Diagnostics.Debug.Print(ex.ToString());
}
}
调用COM所用的C++程序: