- генерирование кода из файла конфигурации во время выполнения
- Компилирование этого кода в общую библиотеку
- объединяет, что совместно использует библиотеку (dlopen ()
- , которая совместила с этой библиотекой (dlopen ()
- . /> Вызов функции из этой общей библиотеки (dlsym () )
- Возвращение оттуда
- Я не могу изменить существующую архитектуру системы, поэтому я должен работать с этим шаблонным строителем. Функции с dlsym () )
Любые идеи или указатели относительно того, как я мог бы это реализовать? Не обязательно использовать RTTI, только основные ограничения не могут измениться (мне нужно генерировать DLL во время выполнения).
Я также думал о передаче ссылки на экземпляр Builder из Main () функции в DLL, но проблема в том, что DLL находится в позиции, где я не замечает, что я не смогу о том, что я не сможет, что я не смогу о том, что я не сможет, что я не смогу о том, что я не сможет. Функции, которые являются уникальными для этого состояния (функции, которые необходимы для настройки установленного теперь объекта). < /p>
Я буду очень благодарен за каждый и любой намек или предложение, которое я могу получить! Добавление всего кода класса застройщиков невозможно, это более 800 строк. Меня не испытывают в шаблонах C ++, но я предполагаю, что это означает, что здесь может быть несколько типов, и все они являются частью финального типа строителя, поскольку они являются частью его Layerstore: < /p>Это означает, что я даже не могу знать количество типов, которые у меня будут в этом лайсторе в конечном состоянии застройщика, так как я не знаю, сколько слоев будет иметь систему.Код: Выделить всё
template class LayerStore {State, точнее:Код: Выделить всё
auto builder = hqos::builder::Builder() .add_shaper_layer( 2, [](auto item_data) { rte_pktmbuf_free(static_cast(item_data)); return true; }) .add_scheduler_layer( 2, [](auto item_data) { rte_pktmbuf_free(static_cast(item_data)); return true; }) .add_shaper_layer( 2, [](auto item_data) { rte_pktmbuf_free(static_cast(item_data)); return true; }) .add_scheduler_layer( 1, [](auto item_data) { rte_pktmbuf_free(static_cast(item_data)); return true; }) .add_final_shaper_layer( 1, [](auto item_data) { rte_pktmbuf_free(static_cast(item_data)); return true; }); < /code> Это создает новый объект Builder с Mapper по умолчанию, а затем добавляет в него 5 слоев. Параметры функций, добавляющих слои, определяются из файла конфигурации, поэтому их общий счет (этот конкретный пример фактически генерируется моим кодом и записывается в файл DLL). После добавления окончательного уровня я сейчас нахожусь в построенномЯ получаю головные боли исключительно от просмотра этого типа, но, как вы можете видеть, это не предсказуемо.Код: Выделить всё
hqos::builder::Builder::Built
Подробнее здесь: https://stackoverflow.com/questions/797 ... d-dll-in-c
Взаимодействие с генерируемым DLL во время выполнения в C ++ ⇐ C++
-
Anonymous
Взаимодействие с генерируемым DLL во время выполнения в C ++
Я застрял с небольшой (огромной) проблемой в текущем проекте. Я расширяю систему, которая была написана в C ++ и использует широкое использование методов и объектов шаблона. В частности, я пытаюсь реконфигурировать основной компонент системы, используя предоставленный шаблон строителя, по
Мобильная версия