реклама на сайте
подробности

 
 
> Портирование DLL на Linux, Принцип работы Windows DLL
amw
сообщение May 18 2007, 14:15
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Задача такая:
Есть: DLL для Windows в исходниках C++.
Нужно: shared lib для Linux с сохранением совместимости на уровне исходников приложений.

DLL использует активно OVERLAPPED IO, Notyfication, Event, Thread.
В Linux (кроме Thread) нет аналогов этому. Или есть? Тогда какие, что почитать?

Опыта программирования в Windows очень мало, потому и вопросы тупые:

После анализа кода появилось ощущение, что переменные в Windows DLL могут использоваться разными приложениями. В смысле одна и та же копия переменной доступна нескольким процессам. Это так?

В коментариях в исходниках есть фразы на подобие
"Отсылаем WM_MESSAGE всем процессам, использующим DLL что очередь изменилась."
Вопрос: Windows DLL является самостоятельной сущностью, типа процесса? А иначе как DLL может отослать что-то ВСЕМ процессам, ее использующим?

Прошу не пинать ногами и не посылат сразу в MSDN. Я его пытаюсь читать, но эти вопросы ставят меня в тупик.

Сообщение отредактировал amw - May 18 2007, 14:20


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
amw
сообщение May 18 2007, 17:41
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Спасибо!!!

А если DllMain выглядит так:
Код
BOOL APIENTRY DllMain( HINSTANCE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
                     )
{
    switch (ul_reason_for_call)
    {
        case DLL_PROCESS_ATTACH:
            hInstance = hModule;
            break;
        case DLL_THREAD_ATTACH:
            break;
        
        case DLL_THREAD_DETACH:
            break;

        case DLL_PROCESS_DETACH:
            break;
    }
    return TRUE;
}

какие можно сделать выводы в контексте моих вопросов?
shared сегменты как-то декларируются или есть отдельные функции для их запроса/выделения/использования?


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th August 2025 - 08:25
Рейтинг@Mail.ru


Страница сгенерированна за 0.01362 секунд с 7
ELECTRONIX ©2004-2016