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

 
 
> DLL и УПРАВЛЯЕМЫЙ КОД, Непонятное зависание DLL связанное с OS LoaderLock
Yuriy_Rus
сообщение Nov 13 2010, 05:35
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 68
Регистрация: 24-07-06
Пользователь №: 19 039



Здравствуйте, все для кто знает не только английский или немецкий, или ..., но и такие "иностраные языки" как, например, "C", "C++", "С#", "Java" и т. д. )

На днях при разработке DLL на C++ (Studio 2005) под шарповскую прогу столкнулся с проблемой: smile3046.gif
При заврешении работы программы при отладке (проект DEBUG) иногда вижу такое сообщение:

"Managed dbug Assistant 'LoaderLock' has detected a problem in <имя проги>.
Additional Information: Attempting managed execution inside OS Loader lock.
Do not Attempting to run managed code inside a DllMain or image initialization function
since doing so can cause to application to hang."

Короче, некий LoaderLock, он же "Помощник по отладке управляемого" говорит мне, что мол я там применяю упарвляемый код в рамках выполнения DllMain или функции инициализации картинки. И что такой код может привести к зависанию приложения.

Так оно и получается, при релизе прога иногда при завершении работы выдаёт сообщение: "The appkication has requested the Runtime to terminate it unusual way..." и вешается. Завершиить прогу можно только через диспетчер задач.

Посмотрел свой DllMain:

Код
HINSTANCE hDLL = NULL;

#pragma unmanaged
BOOL WINAPI DllMain
(
    HANDLE hinstDLL,
    DWORD dwReason,
    LPVOID lpvReserved
)
{
    try
    {
        switch (dwReason)
        {
            case DLL_PROCESS_ATTACH:

                hDLL = (HINSTANCE)hinstDLL;

            break;

            case DLL_PROCESS_DETACH:
                                    
              return TRUE;
        }
    }
    catch (...)
    {
        return FALSE;
    }
    return TRUE;
}


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

Тогда полез в инет и начал изучать OS Loader Lock
LoaderLock

Тогда как раз и написал дерективу
Код
#pragma unmanaged
, но не помогло.

До сих пор ломаю голову, где у меня дырка, т. к. шарповская прога работает и с другими DLL-ками, но таких проблем как у меня ни у кого нет.

Может кто-то уже сталкивался с такими припятсвиями на пути стаблиьно работающей проги.. ) Поделитесь, плз., знаниями. 1111493779.gif

PS: Заранее спасибо всем, кто участвует в обсуждении.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 3)
jorikdima
сообщение Nov 13 2010, 06:44
Сообщение #2


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



могу порекомендовать только тут спросить
forum.vingrad.ru
на электрониксе люди как-то больше по транзисторам smile.gif
Go to the top of the page
 
+Quote Post
neiver
сообщение Nov 13 2010, 08:30
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 214
Регистрация: 22-03-10
Из: Саратов
Пользователь №: 56 123



А в свойствах проекта "Common Language Runtime support" какое значение имеет? В вашем случае должно быть "No Common Language Runtime support".
Go to the top of the page
 
+Quote Post
Yuriy_Rus
сообщение Nov 13 2010, 09:58
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 68
Регистрация: 24-07-06
Пользователь №: 19 039



No Common Language Runtime support - так и есть
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 21:39
Рейтинг@Mail.ru


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