--
В линуксе есть возможность как экспортировать функции из so (dll), которые будет потом использовать главный бинарник программы, так и наоборот — главный бинарник программы может экспортировать функции, которые потом будет использовать динамическая библиотека после загрузки её главной программой. Т.е. главный бинарник может предоставлять функции и внутренние свои структуры данных в доступ из динамической библиотеки (в данном случае плагину).
В ниже-приведённом примере get_param() экспортируется главной программой и она доступна для библиотеки, проблема в том, чтобы собрать эту библиотеку так, чтобы она понимала, что эта функция позже будет найдена в главной программе.
Есть следующий код:
под ликуксом прекрасно компилится, линкуется.
Под виндой в mingw компилируется, но линковаться отказывается, мотивируя отсутсвием библиотеки с функцией get_param
Компилятор и линковшик в обоих случаях один и тотже — MinGW
extern "C" int module_generate_krnl(char*pam,int size); // запуск функции-обработчика модуля
extern "C" char* get_param(char*pam, char*buf, int size);
int module_generate_krnl(char*pam,int size_pam)
{
char*tt;
tt=get_param(tt,tt,100);
return 0;
}