Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка при загрузке DLL 
:(
    Опции темы
lv151
Дата 4.6.2009, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 916
Регистрация: 11.2.2008

Репутация: нет
Всего: 2



HINSTANCE hLib = LoadLibrary("my.dll");
FormatMessage( 
    FORMAT_MESSAGE_ALLOCATE_BUFFER | 
    FORMAT_MESSAGE_FROM_SYSTEM | 
    FORMAT_MESSAGE_IGNORE_INSERTS,
    NULL,
    GetLastError(),
    MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
    (LPTSTR) &lpMsgBuf,
    0,
    NULL);

MessageBox( NULL, (LPCTSTR)lpMsgBuf, "Error", MB_OK | MB_ICONINFORMATION ); - Операция успешно завершена, но hLib = 0;
PM MAIL   Вверх
GremlinProg
Дата 4.6.2009, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 2
Всего: 106



lv151, покажи DLLMain этой библиотеки


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
lv151
Дата 4.6.2009, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 916
Регистрация: 11.2.2008

Репутация: нет
Всего: 2



Цитата(GremlinProg @  4.6.2009,  16:14 Найти цитируемый пост)
покажи DLLMain этой библиотеки 

что это?

читаю мсдн smile

Это сообщение отредактировал(а) lv151 - 4.6.2009, 16:16
PM MAIL   Вверх
GremlinProg
Дата 4.6.2009, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 2
Всего: 106



Цитата(lv151 @  4.6.2009,  18:15 Найти цитируемый пост)
что это?

главная функция
Цитата(DllMain @ MSDN)

When the system calls the DllMain function with the DLL_PROCESS_ATTACH value, the function returns TRUE if it succeeds or FALSE if initialization fails. If the return value is FALSE when DllMain is called because the process uses the LoadLibrary function, LoadLibrary returns NULL. (The system immediately calls your entry-point function with DLL_PROCESS_DETACH and unloads the DLL.) If the return value is FALSE when DllMain is called during process initialization, the process terminates with an error. To get extended error information, call GetLastError.

When the system calls the DllMain function with any value other than DLL_PROCESS_ATTACH, the return value is ignored.



--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
lv151
Дата 4.6.2009, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 916
Регистрация: 11.2.2008

Репутация: нет
Всего: 2



Как отлаживать DllMain?
PM MAIL   Вверх
GremlinProg
Дата 4.6.2009, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 2
Всего: 106



Цитата(lv151 @  4.6.2009,  18:29 Найти цитируемый пост)
Как отлаживать DllMain?

открываешь свойства DLL-проекта, заходишь на вкладку Debugging и заполняешь пункт Сommand
здесь нужно указать любую программу, которая загружает твою DLL
ставишь брейкпойнт в DllMain и отлаживаешь


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
lv151
Дата 4.6.2009, 16:57 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 916
Регистрация: 11.2.2008

Репутация: нет
Всего: 2



Так и делал, но у меня никогда не заходит в DllMain.
PM MAIL   Вверх
GremlinProg
Дата 4.6.2009, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 2
Всего: 106



значит длл не загружалась, может в пути напутал чего
пробуй загружать длл статически:
Код

#pragma comment(lib,"путь/к/длл")



--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
lv151
Дата 4.6.2009, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 916
Регистрация: 11.2.2008

Репутация: нет
Всего: 2



FormatMessage( 
    FORMAT_MESSAGE_ALLOCATE_BUFFER | 
    FORMAT_MESSAGE_FROM_SYSTEM | 
    FORMAT_MESSAGE_IGNORE_INSERTS,
    NULL,
    GetLastError(),
    MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
    (LPTSTR) &lpMsgBuf,
    0,
    NULL);

MessageBox( NULL, (LPCTSTR)lpMsgBuf, "Error", MB_OK | MB_ICONINFORMATION ); - Выдаёт - "Операция успешно завершена"
PM MAIL   Вверх
GremlinProg
Дата 4.6.2009, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 2
Всего: 106



да мы уже поняли ))

Добавлено через 1 минуту и 9 секунд
я имел ввиду при отладке

Добавлено через 2 минуты и 18 секунд
говорю ж показывай DllMain, чего гадать-то


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
lv151
Дата 4.6.2009, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 916
Регистрация: 11.2.2008

Репутация: нет
Всего: 2



Код

#include "afxdllx.h"

static AFX_EXTENSION_MODULE NEAR extensionDLL = { NULL, NULL };

extern "C" int APIENTRY
DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
{
    if (dwReason == DLL_PROCESS_ATTACH)
    {
        // extension DLL one-time initialization
        if (!AfxInitExtensionModule(extensionDLL, hInstance))
           return 0;

     new CDynLinkLibrary(extensionDLL);
    }
    return 1;   // ok
}


PM MAIL   Вверх
GremlinProg
Дата 4.6.2009, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 2
Всего: 106



ну, MFC в другом разделе


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
lv151
Дата 4.6.2009, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 916
Регистрация: 11.2.2008

Репутация: нет
Всего: 2



В смысле задавать вопрос в другой раздел форума?

Добавлено @ 17:29
В трэйсе при LoadLibrary наблюдается:
First-chance exception in My1.exe (NTDLL.DLL): 0xC0000139: (no name).

Я ошибся, не в том месте вызывал FormatMessage.
Ошибка - "Не найден указанный модуль".
Код


DWORD z = GetCurrentDirectory(256, tchBuffer);
MessageBox( NULL, (LPCTSTR)tchBuffer, "Folder", MB_OK | MB_ICONINFORMATION ); 
- в той же папке что и экзэшник.


Это сообщение отредактировал(а) lv151 - 4.6.2009, 17:35
PM MAIL   Вверх
GremlinProg
Дата 4.6.2009, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 2
Всего: 106



ну вот, а я уже переместил топик
Цитата(lv151 @  4.6.2009,  19:24 Найти цитируемый пост)
Ошибка - "Не найден указанный модуль".

Цитата(lv151 @  4.6.2009,  19:24 Найти цитируемый пост)
в той же папке что и экзэшник.

сложно сказать,
тут есть некоторые нюансы совместимости при загрузке образов в Vista/W7: http://www.wasm.ru/forum/viewtopic.php?id=32892
такое возможно, пожалуй, только если длл была скомпилирована, к примеру в XP, а загружается в висте
по крайней мере, на это может указывать ошибка в NTDLL


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
lv151
Дата 4.6.2009, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 916
Регистрация: 11.2.2008

Репутация: нет
Всего: 2



нет, усё в хр. уже и явно путь прописал - та же ерунда :(.
PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.1294 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.