линковка dll в mingw (в windows)
От: Stepan_24  
Дата: 01.06.06 03:02
Оценка:
--
В линуксе есть возможность как экспортировать функции из 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;
}

Правило сборки:
main: init.o
gcc -shared --dll init.o -o mkc_test.dll
init.o:
gcc -c -fPIC init.cpp -o init.o

Вопрос: есть ли в винде данная возможность и если нет, то можно ли как-то обойти это ограничение?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.