【发布时间】:2017-11-27 03:54:14
【问题描述】:
我在 DLL 中有 C# 对象。 我通过 MFC DLL 中的 COM 调用此对象的方法。像这样:
BOOL CForwarder::InitMyManagedFlex()
{
// Initialize COM.
HRESULT hr = CoInitialize(NULL);
// Create the interface pointer.
IForwarderPtr pIFwd(__uuidof(MyForwarder));
long lResult = 0;
VARIANT_BOOL ret = FALSE;
BSTR bstr = AsciiToBSTR("AAA");
// Call the Add method.
pIFwd->Start(bstr, &ret);
SysFreeString(bstr);
wprintf(L"The result is %d\n", ret);
// Uninitialize COM.
CoUninitialize();
return (ret == VARIANT_TRUE) ? TRUE : FALSE;
}
过了一会儿,我以完全相同的方式调用另一个方法 SetTimeFormat。 问题是,每次我以这种方式调用时,我都会实例化一个新的 C# 对象,但实际上我试图访问第一次创建的同一个对象,并将它的一个属性设置为不同的值。
问题似乎出在这一行:
IForwarderPtr pIFwd(__uuidof(MyForwarder));
那么我如何获得同一个 C# 对象的接口而不是创建一个新对象呢?
【问题讨论】: