Com Out-of-process (ошибка: Класс Не Зарегистрирован)

Тема в разделе "Общие вопросы по С и С++", создана пользователем traktor, 5 янв 2015.

  1. traktor

    traktor New Member

    Регистрация:
    5 янв 2015
    Сообщения:
    2
    Симпатии:
    0
    Здравствуйте, гуру COM`а!

    Возникла проблема, к которой непонятно с какой стороны подойти...
    Если кто-нибудь поможет – буду премного благодарна! =)


    У меня есть программа Prog.exe.

    Она представляет собой что-то типа БД.

    Мне потребовалось программно создать в ней что-то.

    Эта самая программа Prog.exe предоставляет свои API.

    То есть, мне нужно написать клиент. Пишу:

    Код (C++):
    #import "Prog.tlb"

    В мэине:

    if( SUCCEEDED(CoInitialize(NULL)) )
    std::cout<<"Ok!"<<std::endl;

    ITProgApp pIApp;
    CString strErr;

    try
    {
    pIApp = ITProgApp(__uuidof(ITProgApp));
    }
    catch (_com_error er)
    {
    const TCHAR * bb = er.ErrorMessage();
    strErr = bb;
    }
    std::cout<<"ITProgApp"<<std::endl;
    std::cout << "Error: " << W2A(strErr) << std::endl;
    Вижу ошибку:
    Класс не зарегистрирован.

    Далее что не делай с pIApp, будет ошибка, ибо он нулевой.


    Дико расстраиваюсь, но пытаюсь разобраться.

    Пишу свой простенький com-объект out-of-process, exe-шник то есть.
    К нему пишу клиент – работает!

    Долго роюсь в реестре – записи у моего mycom.exe и их Prog.exe одинаковые.
    Регистрировала заново из командной строки, ничего не меняется.



    Пробую с другой стороны подползти:

    Код (C++):
    HRESULT hr = OleInitialize(NULL);
    IDispatchPtr pIDisp = NULL;
    try
    {
    pIDisp = IDispatchPtr(__uuidof(ITProgApp));
    }
    catch (_com_error er)
    {
    const TCHAR * bb = er.ErrorMessage();
    strErr = bb;
    }
    std::cout<<"IDispatchPtr"<<std::endl;
    std::cout << "Error: " << W2A(strErr) << std::endl;
    Та же противная ошибка:
    Класс не зарегистрирован.


    Вопрос.
    Что делать то?

    В чем может быть ошибка?

    Всем отозвавшимся спасибо! =)
     
  2. -master-

    -master- Well-Known Member

    Регистрация:
    14 янв 2012
    Сообщения:
    629
    Симпатии:
    18
    Платформы одинаковые?
     
  3. traktor

    traktor New Member

    Регистрация:
    5 янв 2015
    Сообщения:
    2
    Симпатии:
    0
    Да
     
  4. Махыч

    Махыч New Member

    Регистрация:
    13 янв 2015
    Сообщения:
    1
    Симпатии:
    0
Загрузка...

Поделиться этой страницей