Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 Аватар для bedvit
1210 / 261 / 22
Регистрация: 20.05.2016
Сообщений: 1,140
Записей в блоге: 22

Использование ATL класса из COM DLL в обычной DLL

28.09.2021, 23:17. Показов 744. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мое почтение, джентльмены.
Есть две библиотеки (DLL). COM на С++(ATL) и обычная на С++.
Все написаны мной, исходники в папках рядом.
В COM библиотеке есть нужный функционал для обычной.
Вопрос: можно ли, напрямую использовать исходники COM dll на С++(ATL) не через создание COM и регистрацию, а к примеру присоединив хедер один из классов COM.dll (прилагаю хедер)
Кликните здесь для просмотра всего текста
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
// VBA.h: объявление CVBA
 
#pragma once
#include "resource.h"       // основные символы
#include "BedvitCOM_i.h"
 
 
#if defined(_WIN32_WCE) && !defined(_CE_DCOM) && !defined(_CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA)
#error "Однопотоковые COM-объекты не поддерживаются должным образом платформой Windows CE, например платформами Windows Mobile, в которых не предусмотрена полная поддержка DCOM. Определите _CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA, чтобы принудить ATL поддерживать создание однопотоковых COM-объектов и разрешить использование его реализаций однопотоковых COM-объектов. Для потоковой модели в вашем rgs-файле задано значение 'Free', поскольку это единственная потоковая модель, поддерживаемая не-DCOM платформами Windows CE."
#endif
 
using namespace ATL;
 
class ATL_NO_VTABLE CVBA :
    public CComObjectRootEx<CComSingleThreadModel>,
    public CComCoClass<CVBA, &CLSID_VBA>,
    public IDispatchImpl<IVBA, &IID_IVBA, &LIBID_BedvitCOM, /*wMajor =*/ 1, /*wMinor =*/ 0>
{
public:
 
DECLARE_REGISTRY_RESOURCEID(108)
 
 
BEGIN_COM_MAP(CVBA)
    COM_INTERFACE_ENTRY(IVBA)
    COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()
 
 
 
    DECLARE_PROTECT_FINAL_CONSTRUCT()
 
    HRESULT FinalConstruct()
    {
        return S_OK;
    }
 
    void FinalRelease()
    {
    }
 
public:
 
    STDMETHOD(ArraySortS)(VARIANT* array_in_out, VARIANT_BOOL sort_order, LONG key_1, LONG key_2, LONG key_3, LONG sort_orientation, VARIANT_BOOL delete_duplicates, VARIANT_BOOL out_array_index, VARIANT* index_array_ou);
    STDMETHOD(Trim)(BSTR StringIn, BSTR* StringOut);
    STDMETHOD(FilterUnicodeChar)(BSTR StringIn, BSTR EnableChar, BSTR DisableChar, BSTR* ResultOut);
    STDMETHOD(LikeUnicodeChar)(BSTR stringIn, BSTR maskChar, VARIANT_BOOL invertMask, VARIANT_BOOL* result);    
    STDMETHOD(Replace)(BSTR StringIn, BSTR StringFind, BSTR StringReplace, LONG Start, LONG Count, BSTR* StringOut);
    STDMETHOD(InStr)(BSTR StringIn, BSTR StringFind, LONG Start, LONG* Position);
    STDMETHOD(ArraySortV)(VARIANT* array_in_out, LONG key_1, VARIANT_BOOL sort_order1, LONG key_2, VARIANT_BOOL sort_order2, LONG key_3, VARIANT_BOOL sort_order3, BSTR key_and_sort_order_next);
    STDMETHOD(Transpose)(VARIANT* array_in_out);
    STDMETHOD(QRcodePrint)(BSTR QRcodeText, BSTR FileOut, LONGLONG FormatImageOut, LONGLONG SizePixel, LONGLONG PixelColorR, LONGLONG PixelColorG, LONGLONG PixelColorB, LONGLONG VersionSymbol, LONGLONG LevelErrCorrect, LONGLONG QuietZone, BSTR* StringOut);
    STDMETHOD(ConvertFormatImage)(BSTR FileIn, BSTR FileOut, BYTE FormatImageOut);
    STDMETHOD(GetRowsCountCSVansi)(BSTR FileIn, LONG FileFlagNoBuffering, LONG* RowsCountOut);
    STDMETHOD(GetRowCSVansi)(BSTR FileIn, LONG IndexString, LONG FileFlagNoBuffering, BSTR* StringOut);
    STDMETHOD(FindRowsInCSVansi)(BSTR FileIn, BSTR FindString, LONG MultiLine, LONG FileFlagNoBuffering, BSTR* StringOut);
    STDMETHOD(SortDeleteDuplicateRowsCSVansi)(BSTR FileIn, BSTR FileOut, LONG HeaderRowsCount, LONG OnlySort, LONG SortOrder, LONG FileFlagNoBuffering, LONG SetLocale, BSTR Locale, LONGLONG* RowsCountOut);
    STDMETHOD(HashStringSHA)(BSTR StringIn, LONG VersionSHA, BSTR* StringOut);
    //STDMETHOD(ReDimArray)(VARIANT* array_in_out, LONG cDims, LONG cElements1, LONG lLbound1, LONG cElements2, LONG lLbound2, LONG cElements3, LONG lLbound3, LONG cElements4, LONG lLbound4, LONG cElements5, LONG lLbound5);
    STDMETHOD(Array2Dto1D)(VARIANT* array_in_out, LONG lLbound1);
    STDMETHOD(Array1Dto2D)(VARIANT* array_in_out, LONG lLbound1, LONG lLbound2);
 
};
 
OBJECT_ENTRY_AUTO(__uuidof(VBA), CVBA)

Пробовал создать класс в обычной dll, присоединив хедер:
C++
1
2
#include <...VBA.h>
CVBA a;
Вываливается куча ошибок:
Ошибка C2504 CComObjectRootEx: не определен базовый класс
Ошибка C3646 BEGIN_COM_MAP: неизвестный спецификатор переопределения
Ошибка C2275 CVBA: недопустимое использование этого типа в качестве выражения
Ошибка C2059 синтаксическая ошибка: <template-id>
и другие...

Или есть возможно другие способы использовать без регистрации через реестр?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.09.2021, 23:17
Ответы с готовыми решениями:

Использование класса из DLL на С++
Доброго времени суток! У меня существует задача использовать в своей программе dllку, написанную на с++ и собранную через gcc. В...

Ошибка об отсутствии MSVCP140D.dll, ucrtbased.dll, CONCRT140D.dll, VCRUNTIME140D.dll
Добрый день, товарищи. Возникла проблема. Делаю программу с использованием openCV 3.1 на Visual Studio 2013. При компиляции выдает ошибку...

Использование String Tables в .dll(.dll.mui) (Для VB .NET)
Здравствуйте. Нужно извлечь(а потом запоковать) таблицу строк(string tables ). Допустим есть файл explorerframe.dll.mui из...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.09.2021, 23:17
Помогаю со студенческими работами здесь

Использование String Tables в .dll(.dll.mui) (Для C#)
Здравствуйте. Нужно извлечь(а потом запоковать) таблицу строк(string tables ). Допустим есть файл explorerframe.dll.mui из...

ATL DLL ядро и интерфейс на C#
Доброго времени суток!!!! Тут такая проблема....при создании объекта для получения функций и переменных из класа в com, я не могу к...

Использование функций DLL из другой DLL
Ребята подскажите имеется hscli.DLL hscli.LIB и hscli.H , собираю свою DLL-ку , которая использует функции hscli.DLL мои...

Использование dll в 64х сборке -Не удалось получить фабрику класса 80040154 Класс не зарегистрирован
Пишу приложение, работающее с FT232RL (это USB-UART мост, создающий виртуальный СОМ порт), использую стандартные библиотеки от FTDI. Помимо...

Кто может поделиться файлами ogg.dll, vorbis.dll и vorbisfile.dll - 32-х и 64-битными версиями?
Движок перевожу на платформу Win64 и нужно, чтобы разрядность ЕХЕ и DLL совпадали, а в интернете искал 64-битные версии ogg.dll, vorbis.dll...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru