0 / 0 / 0
Регистрация: 27.09.2006
Сообщений: 20

Использование COM объекта

22.10.2014, 18:16. Показов 6244. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! Обращаюсь первый раз))
С COM дел пока не имел.
Есть проблема, необходимо использовать COM-интерфейс IX509CertificateRequest что описан в CertEnroll.dll.
Нагуглил кучу информации по поводу как вообще программировать и использовать com-объекты, но что-то я не так делаю по всей видимости...

Есть вот такой код:

C++
1
2
3
4
5
6
7
8
9
//Инициализация COM
            if(FAILED(CoInitialize(NULL))) cout<<"Fail Initialize COM!!!";
    
            //Указатель на интерфейс
            IX509CertificateRequest* p_ix509;
 
            HRESULT hr;
 
            hr = CoCreateInstance(IID_IX509CertificateRequest, NULL, CLSCTX_SERVER, IID_IX509CertificateRequest, (void**) &p_ix509);
Возникает ошибка: Error 1 error LNK2001: unresolved external symbol _IID_IX509CertificateRequest D:\ProjectCpp\Test_4\Test_4\Test_4.obj Test_4

Что делать?
Заранее спасибо!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.10.2014, 18:16
Ответы с готовыми решениями:

Использование COM объекта (c#) в sql
Создал на c# COM объект using System; using System.Collections.Generic; using System.Linq; using System.Text; using...

Использование объекта Array
Используя объект Array, создать массив случайных чисел.

Использование объекта класса
В основном файле объявлен объект класса. При нажатии на кнопку должен вызываться метод класса для объекта созданного в основном файле. ...

6
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
22.10.2014, 19:47
Подключите следующий файл:
C++
1
#include <initguid.h>
0
Модератор
 Аватар для vxg
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,463
22.10.2014, 20:06
вам нужно использовать директиву #include с заголовочным файлом содержащим ваши интерфейсы и прочие символы например
C++
1
#include "opchda.h"
либо использовать директиву #import если ваша среда позволяет подключать объекты напрямую (например MSVC++) например
C++
1
#import "c:\program files\common files\system\ado\msadox.dll"
не исключено что еще потребуются магические продолжения этой строки вида rename("EOF", "EndOfFile") или no_namespace
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
22.10.2014, 20:46
Лучший ответ Сообщение было отмечено KerLaeda как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <Windows.h>
#include <stdio.h>
#include <certenroll.h>
 
int main()
{
    CoInitialize(NULL);
 
    IX509CertificateRequest * pCertReq;
 
    HRESULT const Status = CoCreateInstance(
        __uuidof(CX509CertificateRequestPkcs10),
        NULL,
        CLSCTX_SERVER,
        __uuidof(IX509CertificateRequest),
        reinterpret_cast<void **>(&pCertReq)
        );
 
    if (FAILED(Status))
    {
        printf("CoCreateInstance failed with status 0x%.8lx.\r\n", Status);
    }
 
    else
    {
        printf("OK!\r\n");
        pCertReq->Release();
    }
 
    CoUninitialize();
 
    return EXIT_SUCCESS;
}
> OK!
(Visual Studio 2010).
1
0 / 0 / 0
Регистрация: 27.09.2006
Сообщений: 20
23.10.2014, 17:49  [ТС]
Убежденный! Спасибо, заработало)) вот только можно вопросик, почему в функции CoCreateInstance первый параметр CX509CertificateRequestPkcs10?

Теперь осталось разобраться как вообще этим пользоваться...
0
Модератор
 Аватар для vxg
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,463
23.10.2014, 18:50
Цитата Сообщение от KerLaeda Посмотреть сообщение
почему
наверное потому что это идентификатор класса
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
23.10.2014, 19:27
Лучший ответ Сообщение было отмечено KerLaeda как решение

Решение

Цитата Сообщение от KerLaeda Посмотреть сообщение
почему в функции CoCreateInstance первый параметр CX509CertificateRequestPkcs10?
CoCreateInstance принимает два идентификатора - CLSID и IID.
CLSID - это идентификатор класса, т.е. фактически это ID COM-класса,
который вы хотите создать, он уникален. IID - это идентификатор
интерфейса через который вы хотите работать с объектом.
Например IUnknown, IPersistStream и т.д.

Разные COM-классы могут поддерживать одни и те же интерфейсы.
Но при этом не может быть двух COM-классов с одинаковыми CLSID.
Как-то так.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.10.2014, 19:27
Помогаю со студенческими работами здесь

Использование объекта ListBox
Всем привет. Где можно прочитать инфу по параметрам этого элемента? Как сделать проверку в режиме реального времени? в элементе...

Использование объекта из другого потока
Приветствую, граждане. Не являюсь программистом и не собираюсь им становиться. Лишь ИЗРЕДКА что-то пишу для собственных бытовых нужд....

Использование переменной в методе COM объекта
Есть SQL-подобная база, доступ к базе возможен только через COM интерфейс. Реализован следующий метод для получения инфомации: ...

Использование объекта Timer в Delphi
Как можно изменить вот этот код чтобы у меня в Label1 был как бы счет времени формата 00:00:00 часы:минуты:секунды procedure...

HTML + JavaScript. Использование объекта Date
Создать одномерный массив действительных чисел, определить минимальное значение массива и поменять эту компоненту с первой. помогите...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

Новые блоги и статьи
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru