CoCreateInstance 0x80040154 Класс не зарегистрированная ошибка - PullRequest
0 голосов
/ 08 апреля 2020

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 в основном проекте?

Заранее спасибо

...