Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
А ещё можно не плодить тонны лишних сущностей создающих проблемы переносимости даже в Windows (32 и 64 бита), и использовать встроенную в CLI инструкцию вызова функции по произвольному указателю. Но, конечно, ни у кого нет времени, чтобы разбираться с этим, лучше ещё раз соорудить промежуточную неуправляемую заглушку, ведь там всё просто и понятно.
лучше ещё раз соорудить промежуточную неуправляемую заглушку, ведь там всё просто и понятно
Можно же просто в желтом квадрате, который «managed dll» объявить кокласс-переходник, и его инстанциировать в native dll (синий квадрат)?
Эээ… Так ComVisible и использование tlb — это уже обращение к COM-маршаллеру, так что обойтись без COM не удалось.
Насчёт проблем с освобождением ресурсов — могу посоветовать их решить ручным управлением ресурсами в unmanaged dll (синий блок) и запуском COM-подсистемы в режиме out-of-process.
Можно это убрать. Т.е. создать структуры на 2ух сторонах: на стороне managed и unmanaged dll и потом приводить их (главное чтобы размер совпадал).
Библиотеку (plugin) можно реализовать только на C\C++.
.export [<ordinal>] as <export_name>Я, к сожалению, не знаком с ArchiCAD, но я не уверен, что утверждение:
Библиотеку (plugin) можно реализовать только на C\C++.
верно.
а в Visual Studio встроенных средств/атрибутов для этого не предусмотрено. Зато у нас есть много кода и описаний от разных умельцев: раз, два, три и четыре. Последний использует Cecil и даже имеет шаблон-проект.
Я лично сделал wcx-плагин для Total Commander используя код из второй статьи (методы действительно экспортированы) — все отлично работает и по сей день. :)
Взаимодействие managed и unmanaged кода