Создание библиотеки DLL на C++ по примеру C#

113
10 ноября 2019, 23:20

Есть инструкция по написании необходимой библиотеки на C#. Она гласит следующее:

  1. Создаем пустой проект библиотеки DLL. Это сделано
  2. Прописываем "using System.Runtime.InteropServices;" Не понятно
  3. Через меню "Сервис\Создать GUID" генерируем GUID для библиотеки и вписываем его как атрибут перед именем класса. Дополнительно надо дописать атрибуты взаимодействия COM. [Guid("блаблабла"), ClassInterfaceAttribute(ClassInterfaceType.None), ComSourceInterfaces(typeof(SPlugin))] public class SPlugin : ISearchPlugin, ISearchPluginDocument2, ISearchPluginRouter

GUID сгенерирован, Что написано далее непонятно

  1. Подключаем библиотеку XX : в студии меню "Проект / Добавить ссылку", в разделе "COM" находим "XX", подключаем ее и приписываем "using XX;"XX - существующая библиотека, которая содержится на компьютере, но как "достать" её через VS непонятно, при соблюдении инструкции открывается пустой список, из которого ничего нельзя вынуть, естественно (на картинке)

Мне понятно, что вопрос абсолютно нубовский, но задача срочная и не по моему профилю, хотелось бы понять, что всё это значит и как написать тоже самое на C++

Answer 1

Не до конца понимаю что это за подключения описанные в топике, но в общем, есть два вида подключения DLL к другим проектам: явный и неявный. Об этом можно почитать здесь, а способ, которым мы можем создать нашу DLL, это при создании нового проекта в Visual Studio выбрать тип проекта DLL, описать все нужные нам функции в header файлах и их реализация в cpp. После чего просто сделать build и исходные файлы как .lib и .dll использовать как описано в ссылке, которую скинул выше. Приходилось несколько раз создавать и подключать dll, но ни разу не помню такого, чтобы использовал какие-то генерации GUID, попробуйте создать самый обычный dll проект заново и просто почитать то, как потом эту dll подключить к другому проекту.

READ ALSO
C++ clr Hosting - ICLRMetaHost GetRuntime уточнение версии до 4.7.2

C++ clr Hosting - ICLRMetaHost GetRuntime уточнение версии до 4.7.2

При использовании конфигурации appexe

97
Лишние папки после сборки

Лишние папки после сборки

После установки CefCharp в папке сборки появились папки "x64", "x86", "GPUCache", "blob_storage"

113
Не могу перевести код (вероятно JS) в C# [закрыт]

Не могу перевести код (вероятно JS) в C# [закрыт]

Код, который нужно перенести :

111
Вопрос по генераторам

Вопрос по генераторам

Не понимаю, для чего нужна переменная $collectВызывается ли функция-генератор collect() при ее присваивании переменной $collect? Или она вызывается только...

89