The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"сборка dll в mingw"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"сборка dll в mingw"  
Сообщение от Serega_S email(??) on 31-Май-06, 18:26 
Есть проект под линуксом.
Кратко:
Ядро программы (чата) загружает модуль, модуль экспортирует функции, запускаемые ядром. Ядро тоже экспортирует набор функций, которые может запускать модуль. В линуксе всё линкуется и запускается и работает.
Под mingw упорно не хочет линковаться модуль, ругаясь на функцию, которая будет вызываться из ядра.

Пробовал указывать все опции, которые указывал при сборке в линуксе, хотя там одна опция: -shared и всё собирается и работает.

Вопрос: как заставить это дело собраться под mingw?

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "сборка dll в mingw"  
Сообщение от DeadMustdie email(??) on 31-Май-06, 20:41 
Виндозная модель линковки такого не позволяет, насколько я помню.
Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

2. "сборка dll в mingw"  
Сообщение от Serega_S email(??) on 01-Июн-06, 04:21 
>Виндозная модель линковки такого не позволяет, насколько я помню.

В mingw или вообще?

P.S.: просто ужасно... Проэкт завязан на эту фичу. Как примитивно в винде! Как теперь это обруливать даже и не знаю...

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

3. "сборка dll в mingw"  
Сообщение от DeadMustdie email(??) on 01-Июн-06, 09:15 
>>Виндозная модель линковки такого не позволяет, насколько я помню.
>
>В mingw или вообще?

Вообще.

>P.S.: просто ужасно... Проэкт завязан на эту фичу. Как примитивно в винде!
>Как теперь это обруливать даже и не знаю...

LoadLibrary() + GetProcAddress() - аналог dlopen() + dlsym()

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

4. "сборка dll в mingw"  
Сообщение от Serega_S email(??) on 01-Июн-06, 11:34 
>>>Виндозная модель линковки такого не позволяет, насколько я помню.
>>
>>В mingw или вообще?
>
>Вообще.
>
>>P.S.: просто ужасно... Проэкт завязан на эту фичу. Как примитивно в винде!
>>Как теперь это обруливать даже и не знаю...
>
>LoadLibrary() + GetProcAddress() - аналог dlopen() + dlsym()

В моём случае код функции находится в главной программе, которая загружет эту либу. Т.е. получается загружать некого, т.к. код уже загружен. Или загружать код бинарника?

Проблема даже на этапе компиляции - просто не собирается.

Нашёл одно из решений:
1) Все экспортируемые функции обявить с __declspec(dllexport) (в exe-шнике)
2) Использовать с __declspec(dllimport) (в dll-ке)
3) Сгенерить для exe-шника библиотеку импорта (ld --out-implib <file>)          
4) Мспользрвать эту библиотеку при сборки dll-ки.
Да, для последних линкеров можно протустить 3-ий шаг, а на
4-ом подсунуть в качестве библиотеки сам exe-шник.

Но конечно же интересно иметь набор решений.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру