Перейти к содержанию

Ламерский вопрос - *.DLL и *.so это впринципе одно и тоже?


Рекомендуемые сообщения

Здравствуйте! У меня есть вопрос. *.DLL и *.so это одно и тоже??? Дайте плз. пример как создать свою разделяемую библиотеку в линукс. И проясните как сделать так: у меня есть/будет некий проект на QT. Мне надо чтобы он использовал разделяемые библиотеки в Linux и DLL в Виндовс. Можно ли так сделать чтобы один и тот же исходный код компилировал ДЛЛ'ки в виндовс, и SO'шники в линукс?

Заранее Спасибо.

Ссылка на комментарий
Поделиться на другие сайты

можно, примеры - исходники zlib, lame, и куча других библиотек.

so, это shared object, может быть вручную загружен функцией dlopen.

далее ищем в google

Ссылка на комментарий
Поделиться на другие сайты

Есть проблема! Пусть существует некий проект библиотеки. Я создал некий файльчик 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), там выполняется некий код. Дело в том что в Линухе эти функции выполняются по своему прямому назначению - т.е. Выполняются после загрузки и перед выгрузкой библиотеки, в винде они просто игнорируються. В чем проблема?

Ссылка на комментарий
Поделиться на другие сайты

max1987 писал(а) Птн, 16 Июня 2006 15:38

Линухе эти функции выполняются по своему прямому назначению - т.е. Выполняются после загрузки и перед выгрузкой библиотеки, в винде они просто игнорируються. В чем проблема?

а где написанно, что их можно использовать в динамических библиотеках для windows? gcc да, но виндовый линкер имеет для этого специальные флаги. линкуй на windoze как статически, и траблы должны исчезнуть.

Ссылка на комментарий
Поделиться на другие сайты

Цитата:

а где написанно, что их можно использовать в динамических библиотеках для windows? gcc да, но виндовый линкер имеет для этого специальные флаги.

Я использую gcc для Windows(MinGW)

Ссылка на комментарий
Поделиться на другие сайты

max1987 писал(а) Сбт, 17 Июня 2006 05:35

Я использую gcc для Windows(MinGW)

вроде без разницы, на виндозе нужно по другом эти функции называть - вроде _DLL_Init, и давать имено gnu ld спец флаги.

а __attribute__ ((constructor)) только для Unix.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...