Size: a a a

2020 August 16

RM

Roy Mustang in C++ Together 2.0
У меня вот лежит в namespace Helena
источник

RM

Roy Mustang in C++ Together 2.0
только вот вызывать я его могу по имени
источник

🦊

🦊fox.cpp in C++ Together 2.0
Roy Mustang
Так у меня все символы из .dll в неймспейсах лежат
Поэтому ты даешь хедер, в котором апи плагина со всеми определениями
источник

RM

Roy Mustang in C++ Together 2.0
🦊fox.cpp
Поэтому ты даешь хедер, в котором апи плагина со всеми определениями
Ну так и делаю, вот пример тестового модуля, точнее его хедера
источник

RM

Roy Mustang in C++ Together 2.0
Как видишь, тут указатели на другие модули лежат внутри класса, я вот для этого предлагал класс-фабрику завезти чтоб туда эти указатели складывать по типу
источник

🦊

🦊fox.cpp in C++ Together 2.0
Либа net.dll загрузилась, теперь у тебя есть сокет, потом shit.dll, которому сокет нужен, он просто берет его из helena::net::socket и все
источник

🦊

🦊fox.cpp in C++ Together 2.0
И вообще никакой сраки с классами нет
источник

🦊

🦊fox.cpp in C++ Together 2.0
И работает оно тоже с никаким оверхедом
источник

M

Michael in C++ Together 2.0
Michael
О, надо не забыть будет чекнуть сурсы dlfcn.h .

Там как раз ленивое,  гнобальное и какое то ещё разрешение символов есть
Вот интересный пример работы с этой библиотекой

https://github.com/knusbaum/CPP-Dynamic-Class-Loading
источник

🦊

🦊fox.cpp in C++ Together 2.0
🦊fox.cpp
Либа net.dll загрузилась, теперь у тебя есть сокет, потом shit.dll, которому сокет нужен, он просто берет его из helena::net::socket и все
Осталось понять, можно ли это делать на винде
источник

RM

Roy Mustang in C++ Together 2.0
У меня тоже самое только без shared_ptr
источник

🦊

🦊fox.cpp in C++ Together 2.0
Или там линкер аки кастрированный кот
источник

🦊

🦊fox.cpp in C++ Together 2.0
Никому ничего вставить не может
источник

🦊

🦊fox.cpp in C++ Together 2.0
На линупсе вот
источник

🦊

🦊fox.cpp in C++ Together 2.0
https://linux.die.net/man/3/dlopen

В dlopen передается RTLD_GLOBAL|RTLD_LAZY
источник

🦊

🦊fox.cpp in C++ Together 2.0
И ты в шоколаде
источник

🦊

🦊fox.cpp in C++ Together 2.0
Ну или ты можешь просто shit.dll прилинковать к net.dll
источник

🦊

🦊fox.cpp in C++ Together 2.0
И линкер в рантайме разберётся
источник

🦊

🦊fox.cpp in C++ Together 2.0
Просто их рядом положить
источник

RM

Roy Mustang in C++ Together 2.0
У меня тож самое  RTLD_GLOBAL|RTLD_LAZY
источник