我的博文中有类似的例子,与vs2013无关,我用vs2013/17/19都没问题,关键是检查返回的每一个error来知道具体原因。
HRESULT hResult = pOPCItemMgt->AddItems(dwCount, pItems, pResults, pErrors);
if (FAILED(hResult) || hResult == S_FALSE)
{
for (DWORD ii = 0; ii < dwCount; ii++)
{
if (*pErrors && FAILED((*pErrors)[ii])) {
if (((*pErrors)[ii]) == OPC_E_UNKNOWNITEMID || ((*pErrors)[ii]) == OPC_E_INVALIDITEMID)
_tprintf(_T("%S: not exist, try using a full path tag name\n"), pItems[ii].szItemID);
else
_tprintf(_T("%S failed\n"), pItems[ii].szItemID);
}
}
}
如果服务端是用OPC SDK来开发的,在COpcDaGroupWrapper.cpp中放置断点在COpcDaGroupWrapper::AddItems()来找到具体原因。
这一篇博文中有用AddItems,供你参考,
其它博文,