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

Возможно ли подгрузить библиотеку так, чтоб компоновщик подгружал функции из основной программы? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Перенести k-ый элемент в конец массива (k-вводится с клавиатуры) http://www.cyberforum.ru/cpp-beginners/thread1167893.html
Динамическая память. Одномерный массив. Перенести k-ый элемент в конец массива (k-вводится с клавиатуры). если не трудно можете прокомментировать каждое действие а то я совсем нуб
C++ Определить является ли сумма элементов диагонали меньше 100 Статическая память. Двумерный массив. Массив квадратный. Определить является ли сумма элементов диагонали меньше 100. Добавлено через 1 минуту если не трудно можете прокомментировать каждое... http://www.cyberforum.ru/cpp-beginners/thread1167892.html
Определить, сигнал какого цвета горит для пешеходов в данный момент C++
a) Светофор работает следующем образом: с начала часа в течении 3-х минут горит зеленый сигнал, затем в течение 2-х минут горит красный и т.д. Дано вещественное число T, означающее время в минутах,...
C++ Создать в динамической памяти одномерный массив целых чисел
Создать в динамической памяти одномерный массив целых чисел. вычислить сумму четных отрицательных элементов
C++ Ошибка при инициализации массива http://www.cyberforum.ru/cpp-beginners/thread1167848.html
Что делать? Так как я понимаю, точку с запятой вообще в помине не должно здесь быть!о_О
C++ Ввести строку длинной не более 200 символов, вывести на экран последнее слово Задача: Ввести строку длинной не более 200 символов, вывести на экран последнее слово. подробнее

Показать сообщение отдельно
kvadro
11 / 9 / 1
Регистрация: 12.03.2012
Сообщений: 127
06.05.2014, 12:58  [ТС]
Ближе к теме: зависимость библиотеки от программы - нелогичное решение. Не надо так.
А как тогда устроить систему плагинов? Допустим есть приложением, есть библиотека - модуль.
Приложение подгружает модули, передавая указатель на некий объект, который предоставляет контроль над приложением.

Допустим у нас есть интерфейс:
C++
1
2
3
4
class ILogger
{
    virtual void log( const char *msg );
};
Например у нас есть приложение:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Logger : public ILogger
{
    void log( const char *msg ) override
    {
        std::cout << msg;
    }
};
 
int main()
{
    ILogger *logger = new Logger;
 
    dlopen( module );
    initModule  = dlsym( "initModule" );
    initModule( logger );
 
    return 0;
}
Модуль:

C++
1
2
3
4
5
6
bool initModule( ILogger *logger )
{
    logger->log( "hi" );
 
    return true;
}
Ну это отвечая на Ваш вопрос, а вообще просто интересно можно ли сделать так, чтоб компоновщик искал не только в самой библиотеке, а ссылался на основное приложение?
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru