COM newb ie здесь и ценим любую помощь / объяснение. Я установил 32-битную библиотеку COM-типов в 64-битной ОС Windows 10. Когда я пытаюсь получить доступ к COM-компоненту на одном из моих тестовых 32-битных dll, все работает отлично (VS2017).
#import "..\SDK_Location\SDKCOMLib.dll"
bool Connect()
{
HRESULT hr;
::CoInitialize(NULL);
COMLib::IConnectionPtr connection = NULL;
if (FAILED(hr = ::CoCreateInstance(__uuidof(COMLib::Connection), NULL, CLSCTX_ALL,
__uuidof(COMLib::IConnection), (void**)&connection)))
// or connection.CreateInstance(__uuidof(COMLib::Connection))))
{
std::cout << "Failed for \"Connection.CreateInstance\"! Error code: \"0x" << std::hex << hr << std::endl;
::CoUninitialize();
return false;
}
connection->Connect(data);
Сбой того же кода, который использовался в нашем 32-битном проекте, с ошибкой 0x80040154, не зарегистрированной в классе (та же машина / те же свойства проекта / VS2017).
- Исходный код C ++ в обоих проектах импортирует библиотеку типов Win32 из одного и того же местоположения
- TypeLibrary, зарегистрированный и доступный в OleView.
- Проверены все записи реестра и они ссылаются на правильные файлы, местоположения, записи интерфейса, записи Coclass и т. д. c.
- Очистили записи реестра, переустановили DLL
- Подтвердили, что __uuidof () передает правильный GUID кокласса
- Оба проекта имеют одинаковые свойства проекта
- Другие компоненты COM из разных библиотек типов работают нормально.
Есть идеи, что может блокировать доступ к этому компоненту COM в основном проекте?
Заранее спасибо