Max1987 Опубликовано 15 июня, 2006 Жалоба Опубликовано 15 июня, 2006 Здравствуйте! У меня есть вопрос. *.DLL и *.so это одно и тоже??? Дайте плз. пример как создать свою разделяемую библиотеку в линукс. И проясните как сделать так: у меня есть/будет некий проект на QT. Мне надо чтобы он использовал разделяемые библиотеки в Linux и DLL в Виндовс. Можно ли так сделать чтобы один и тот же исходный код компилировал ДЛЛ'ки в виндовс, и SO'шники в линукс? Заранее Спасибо. Цитата
etybaxe Опубликовано 15 июня, 2006 Жалоба Опубликовано 15 июня, 2006 можно, примеры - исходники zlib, lame, и куча других библиотек. so, это shared object, может быть вручную загружен функцией dlopen. далее ищем в google Цитата
Max1987 Опубликовано 16 июня, 2006 Автор Жалоба Опубликовано 16 июня, 2006 Есть проблема! Пусть существует некий проект библиотеки. Я создал некий файльчик mylibs_global.h: #ifndef MYLIBS_GLOBAL_H #define MYLIBS_GLOBAL_H #ifdef Q_WS_WIN # define EXPORT __declspec(dllexport) #else # define EXPORT #endif void __attribute__ ((constructor)) initialize(void); void __attribute__ ((destructor)) finalize(void); #endif Этот файльчик прикручен к моему проекту. В исходниках я уже объявил функции initialize(void) и finalize(void), там выполняется некий код. Дело в том что в Линухе эти функции выполняются по своему прямому назначению - т.е. Выполняются после загрузки и перед выгрузкой библиотеки, в винде они просто игнорируються. В чем проблема? Цитата
etybaxe Опубликовано 16 июня, 2006 Жалоба Опубликовано 16 июня, 2006 max1987 писал(а) Птн, 16 Июня 2006 15:38 Линухе эти функции выполняются по своему прямому назначению - т.е. Выполняются после загрузки и перед выгрузкой библиотеки, в винде они просто игнорируються. В чем проблема? а где написанно, что их можно использовать в динамических библиотеках для windows? gcc да, но виндовый линкер имеет для этого специальные флаги. линкуй на windoze как статически, и траблы должны исчезнуть. Цитата
Max1987 Опубликовано 17 июня, 2006 Автор Жалоба Опубликовано 17 июня, 2006 Цитата: а где написанно, что их можно использовать в динамических библиотеках для windows? gcc да, но виндовый линкер имеет для этого специальные флаги. Я использую gcc для Windows(MinGW) Цитата
etybaxe Опубликовано 17 июня, 2006 Жалоба Опубликовано 17 июня, 2006 max1987 писал(а) Сбт, 17 Июня 2006 05:35 Я использую gcc для Windows(MinGW) вроде без разницы, на виндозе нужно по другом эти функции называть - вроде _DLL_Init, и давать имено gnu ld спец флаги. а __attribute__ ((constructor)) только для Unix. Цитата
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.