Форум программистов, компьютерный форум CyberForum.ru

Теория плагинов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ ./massdown: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by ./massdown) http://www.cyberforum.ru/cpp/thread98890.html
всем хай! собираю свою программу на новом железе х86_64 долго не получалось скомпилить. при линковке получал вот такое сообщение: relocation R_X86_64_32 against `a local symbol' я так понял, это из-за того что часть библиотек от которых зависит цель, были собраны как 32-ух битные. но с этим вроде все нормально, пересобрал все либы - скомпилировалось. теперь при запуске получаю такое...
C++ Как понять этот константный указатель? В общем, имеется класс Cat. Объект класса - SimpleCat. И имеется функция с константым указателем: const SimpleCat* const FunctionTwo(const SimpleCat* const theCat) Что обозначают все эти const? Насколько я понимаю: 1. Константный указатель. 2. Может ссылаться только на FunctionTwo 3. Ничего не изменяет в объекте. 4. Ничего не делает с объектом theCat. http://www.cyberforum.ru/cpp/thread82125.html
C++ Перехват и подмена вызываемых функций
Здравствуйте. Нужно подменить вызов таких функций как open(), lstat(), stat(), read(), write(), mkdir(), chdir(), getcwd() для определенного процесса. Интересует мнение других. Как бы вы реализовали эту задачу. Спасибо!
 

Показать сообщение отдельно
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16946 / 5351 / 329
Регистрация: 30.03.2009
Сообщений: 14,389
Записей в блоге: 26
01.05.2010, 00:56     Теория плагинов
Цитата Сообщение от niXman Посмотреть сообщение
1. Непонятно то, как сам плагин сможет дергать функции из программы?
Элементарно по имени. Если программа гарантирует, к примеру, что в программе есть функция func1, то в плагине можно написать extern-описание и дёргать по имени. Если плагин на Си, а программа на Си++, то в программе функция должна быть описана как extern "C". Можно в плагин подсовывать указатели на функции.

Цитата Сообщение от niXman Посмотреть сообщение
2. Программа написана на С++, но плагины предполагаю писать на Си, во избежания бинарной несовместимости. В этом случае, какие сложности могут возникнуть?
Принципиальных - нет. Понятно, что общение между программой и плагином будет в терминах языках Си - никаких классов и прочей лабудени.

Цитата Сообщение от niXman Посмотреть сообщение
3. Еще непонятно, каким образом "разделять" плагины, ведь их может быть несколько?
plugin1.so, plugin2.so
Или я не понял вопроса

Цитата Сообщение от niXman Посмотреть сообщение
4. И еще непонятно, каким образом программе "сообщить" какие функции дергать из конкретного плагина?
Варианты бывают разные, но в любом случае плагин пишется не от балды, а согласно некоторому зафиксированному интерфейсу. Например, возможен такой вариант, что плагин обязан иметь функции func1, func2 с такими-то интерфейсами и переменные var1, var2 таких-то типов

Цитата Сообщение от niXman Посмотреть сообщение
5. И еще непонятно, каким образом плагин, сможет дергать функции из другого плагина?
Можно точно так же - по имени. Но это слишком замудрёно (например, тогда один плагин не сможет работать без другого). Более правильный вариант - это когда главная программа является посредником, добывает из первого плагина указатель на функцию и отдаёт его во второй плагин.
 
Текущее время: 02:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru