我有一个要求,我需要从C#中获取C ++ Unmanaged dll方法的结果。我正在尝试为类类型创建一个实例,然后尝试使用
调用该方法class ATL_NO_VTABLE CMyClass :
public CComObjectRootEx<CComMultiThreadModel>,
public CComCoClass<CMyClass, &CLSID_MyClass>,
public IDispatchImpl<IMyClass, &IID_IMyClass, &LIBID_MyLib>
{
STDMETHOD(MethodToInvoke)(WORD *pVal);
}
非托管dll是一个COM DLL,我无法修改它,我必须使用它。此外,我没有与该COM DLL互操作,我不确定是否需要有一个或要求某人创建它。以下是那里的样本声明
以下是IDL:
MethodToInvode
以下是类声明:
Type mytype = Type.GetTypeFromProgID("MyProgID.MyClass");
object instance = Activator.CreateInstance(mytype);
result = Convert.ToString(mytype .GetType().InvokeMember("MethodToInvoke", BindingFlags.InvokeMethod, null, instance, null));
为了调用上面的object instance = Activator.CreateInstance(mytype);
我正在尝试使用C#应用程序中的以下代码:
Creating an instance of the COM component with CLSID {XXXXX-XXX-XXX-XXXX-XXXXXX} from the IClassFactory failed due to the following error: 80070057 The parameter is incorrect. (Exception from HRESULT: 0x80070057 (E_INVALIDARG)).
我在{{1}}
行上听到了以下异常例外: {{1}}
请让我知道我所尝试的是否可以实现,如果可以实现,我应该验证什么以确保我的工作。提前致谢