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. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.