描述:
各位大侠,
我有这样一个问题,
我在windows7 64位系统上创建了一个进程外的com,由于我必须调用的一个底层lib是32位的,64位程序无法调用,所以我不得不将其进行com封装,但是com必须做成32位的,做com时我将idl设置中target environment设为x64,然后进行idl编译,同时代理存根文件做的是64位编译。完事后我用我的64位程序调用这个com,但是在com初始化时,老是返回E_NOINTERFACE,请给我有过相同经验的朋友,给解决一下,或者是有个替代方案也行。下面是我的idl接口定义,这是个测试程序:
[
object,
uuid(695A5649-E6B1-4226-A648-5B698A4F2893),
pointer_default(unique)
]
interface ICoMyCom : IUnknown{
[] HRESULT GetData([out] BSTR* Val);
};
测试程序如下:
int _tmain(int argc, _TCHAR* argv[])
{
CoInitializeEx(NULL, COINIT_MULTITHREADED);
CComPtr<ICoMyCom> P;
HRESULT hr = P.CoCreateInstance(__uuidof(CoMyCom));
if (SUCCEEDED(hr))
{
BSTR val;
P->GetData(&val);
MessageBox(NULL, val, NULL, MB_OK);
P.Release();
}
return 0;;
}