Re[8]: Ошибка загрузки DLL -529697949
От: B0FEE664  
Дата: 12.07.12 00:07
Оценка:
Здравствуйте, cupuyc., Вы писали:

C>что говорит мсдн:

C>126 — 7e:
C>ERROR_MOD_NOT_FOUND
C>126 (0x7E)
C>The specified module could not be found.
C>... модуль есть.

На всякий случай:
http://msdn.microsoft.com/ru-ru/library/ms235265.aspx
http://www.dependencywalker.com/
И каждый день — без права на ошибку...
Re[9]: Ошибка загрузки DLL -529697949
От: cupuyc.  
Дата: 12.07.12 06:11
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>Здравствуйте, cupuyc., Вы писали:


C>>что говорит мсдн:

C>>126 — 7e:
C>>ERROR_MOD_NOT_FOUND
C>>126 (0x7E)
C>>The specified module could not be found.
C>>... модуль есть.

BFE>На всякий случай:

BFE>http://msdn.microsoft.com/ru-ru/library/ms235265.aspx
BFE>http://www.dependencywalker.com/

да, нашел я дллку walker`oм.

Подскажите плз, возможно ли из процесса А создать процесс Б и в процессе Б проверять загружаемость дллки, т.к. когда выгружаешь из процесса А дллку она тянет за собой несколько дллок которые необходимы процессу А и он падает.
Re[10]: Ошибка загрузки DLL -529697949
От: MasterZiv СССР  
Дата: 12.07.12 06:32
Оценка:
> Подскажите плз, возможно ли из процесса А создать процесс Б и в процессе Б
> проверять загружаемость дллки, т.к. когда выгружаешь из процесса А дллку она
> тянет за собой несколько дллок которые необходимы процессу А и он падает.

Не может быть.
Posted via RSDN NNTP Server 2.1 beta
Re[11]: Ошибка загрузки DLL -529697949
От: cupuyc.  
Дата: 12.07.12 10:49
Оценка:
Здравствуйте, MasterZiv, Вы писали:


>> Подскажите плз, возможно ли из процесса А создать процесс Б и в процессе Б

>> проверять загружаемость дллки, т.к. когда выгружаешь из процесса А дллку она
>> тянет за собой несколько дллок которые необходимы процессу А и он падает.

MZ>Не может быть.


может и не может, но факт в том, что процесс падает когда вызывается функция FreeLibrary()
Re[12]: Ошибка загрузки DLL -529697949
От: MasterZiv СССР  
Дата: 12.07.12 14:20
Оценка:
> может и не может, но факт в том, что процесс падает когда вызывается функция
> FreeLibrary()

Ну так не вызывай FreeLibrary. Вообще, когда и откуда ты вызываешь эту функцию?
Она достаточно опасна. Например, нельзя её вызывать, если не уверен на 100%,
что никакой код из этой библиотеки не выполняется и что на данные этой
библиотеки нет ссылок. А иначе будет защита памяти.
Posted via RSDN NNTP Server 2.1 beta
Re[10]: Ошибка загрузки DLL -529697949
От: B0FEE664  
Дата: 12.07.12 20:25
Оценка:
Здравствуйте, cupuyc., Вы писали:

C>Подскажите плз, возможно ли из процесса А создать процесс Б и в процессе Б проверять загружаемость дллки, т.к. когда выгружаешь из процесса А дллку она тянет за собой несколько дллок которые необходимы процессу А и он падает.

Вот ведь круто! А зачем? (с)

Это вот зачем вообще такое? Экономия на копейках или экзотика какая? Или учебная задача?
И каждый день — без права на ошибку...
Re[13]: Ошибка загрузки DLL -529697949
От: cupuyc.  
Дата: 13.07.12 08:23
Оценка:
Здравствуйте, MasterZiv, Вы писали:


>> может и не может, но факт в том, что процесс падает когда вызывается функция

>> FreeLibrary()

MZ>Ну так не вызывай FreeLibrary. Вообще, когда и откуда ты вызываешь эту функцию?

MZ>Она достаточно опасна. Например, нельзя её вызывать, если не уверен на 100%,
MZ>что никакой код из этой библиотеки не выполняется и что на данные этой
MZ>библиотеки нет ссылок. А иначе будет защита памяти.

Собственно вот весь код:

HMODULE hLib;
hLib = LoadLibrary(object.fileNameFull);
if (hLib=NULL)
 AfxMessageBox(object.fileNameFull + " - Не загружена!");    
else
FreeLibrary(hLib);


Пробовал не вызывать FreeLibrary() тогда программа падает при выходе из нее.
Re[11]: Ошибка загрузки DLL -529697949
От: cupuyc.  
Дата: 13.07.12 08:26
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>Здравствуйте, cupuyc., Вы писали:


C>>Подскажите плз, возможно ли из процесса А создать процесс Б и в процессе Б проверять загружаемость дллки, т.к. когда выгружаешь из процесса А дллку она тянет за собой несколько дллок которые необходимы процессу А и он падает.

BFE>

BFE>Вот ведь круто! А зачем? (с)

BFE>Это вот зачем вообще такое? Экономия на копейках или экзотика какая? Или учебная задача?

Да вот, захотели буржуи, что бы в программе установки была автоматическая проверка загружаемости устанавливаемых ею dll.
Re[14]: Ошибка загрузки DLL -529697949
От: MasterZiv СССР  
Дата: 13.07.12 08:49
Оценка:
On 07/13/2012 12:23 PM, cupuyc. wrote:

>

> HMODULE hLib;
> hLib = LoadLibrary(object.fileNameFull);
> if (hLib=NULL)
> AfxMessageBox(object.fileNameFull +" — Не загружена!");
> else
> FreeLibrary(hLib);

А зачем вообще загружать её, если тут же она выгружается ?


> Пробовал не вызывать FreeLibrary() тогда программа падает при выходе из нее.


При выходе из кого ? выражайся яснее.
Posted via RSDN NNTP Server 2.1 beta
Re[12]: Ошибка загрузки DLL -529697949
От: MasterZiv СССР  
Дата: 13.07.12 08:51
Оценка:
> Да вот, захотели буржуи, что бы в программе установки была автоматическая
> проверка загружаемости устанавливаемых ею dll.

Идиотизм. Они могут не загружаться в утановщике но загружаться в программе,
и наоборот. Манифесты могут быть указаны (они действуют на одно приложение)
и текущий каталог и содержимое PATH могут быть разными.
Posted via RSDN NNTP Server 2.1 beta
Re[15]: Ошибка загрузки DLL -529697949
От: cupuyc.  
Дата: 13.07.12 10:11
Оценка:
Здравствуйте, MasterZiv, Вы писали:

MZ>On 07/13/2012 12:23 PM, cupuyc. wrote:


>>

>> HMODULE hLib;
>> hLib = LoadLibrary(object.fileNameFull);
>> if (hLib=NULL)
>> AfxMessageBox(object.fileNameFull +" — Не загружена!");
>> else
>> FreeLibrary(hLib);

>> Пробовал не вызывать FreeLibrary() тогда программа падает при выходе из нее.



MZ>А зачем вообще загружать её, если тут же она выгружается ?

Необходимо проверить загружаемость, т.е. подгрузить длл в память удостоверится что LoadLibrary отработает нормально без ошибок и выгрузить эту же длл из памяти за ненадобностью.

MZ>При выходе из кого ? выражайся яснее.

При выходе из программы проверки, в самом конце когда нажимаешь на крестик.

>>Идиотизм.


Ну как бы это не идиотизм а перестраховка на стадии установки. просто система работает в банковской сфере.

>>Они могут не загружаться в утановщике но загружаться в программе,

>>и наоборот. Манифесты могут быть указаны (они действуют на одно приложение)
>>и текущий каталог и содержимое PATH могут быть разными.

в том то и дело что они загружаются в проекте, я пытаюсь то же самое сделать и для установщика. Установка выполняется в каталоге проекта, т.е. пути все совпадают.
Re[16]: Ошибка загрузки DLL -529697949
От: breee breee  
Дата: 13.07.12 10:22
Оценка:
Здравствуйте, cupuyc., Вы писали:

>>>Идиотизм.


C>Ну как бы это не идиотизм а перестраховка на стадии установки. просто система работает в банковской сфере.


Ну, ты же сам видишь, что если они подгружаются в одном случае, не гарантирует, что они будут подгружаться в другом.
Может, по завершении установки производить первый запуск программы (например, с определенным параметром -selftest) и пусть она тестирует все ли в порядке.
Re[16]: Ошибка загрузки DLL -529697949
От: acDev Россия  
Дата: 13.07.12 10:52
Оценка:
Здравствуйте, cupuyc., Вы писали:

C>Необходимо проверить загружаемость, т.е. подгрузить длл в память удостоверится что LoadLibrary отработает нормально без ошибок и выгрузить эту же длл из памяти за ненадобностью.


Может просто проверять PE-файл на корректность? Т.е. сделать проверку, которая бы была аналогом ручной подгрузки DLL в память процесса.

И объясните заказчику что в этом случае достаточно обычной проверки формата файла.
Re[16]: Ошибка загрузки DLL -529697949
От: acDev Россия  
Дата: 13.07.12 12:01
Оценка:
А ещё проще так:
LoadLibraryEx(lpFileName, hFile, LOAD_LIBRARY_AS_IMAGE)
Re[17]: Ошибка загрузки DLL -529697949
От: cupuyc.  
Дата: 13.07.12 13:22
Оценка:
Здравствуйте, acDev, Вы писали:

D>А ещё проще так:


D>LoadLibraryEx(lpFileName, hFile, LOAD_LIBRARY_AS_IMAGE)

а что значит флаг LOAD_LIBRARY_AS_IMAGE ?

>>Может просто проверять PE-файл на корректность?

даже не знаю, т.к. мне нужно проверять полную загрузку с проверкой всех зависимостей и т.д.

>>Может, по завершении установки производить первый запуск программы (например, с определенным параметром -selftest) и пусть она тестирует все ли в порядке.

в принципе это возможно, но оооочень уж геморно.
Re[17]: Ошибка загрузки DLL -529697949
От: cupuyc.  
Дата: 13.07.12 13:31
Оценка:
Здравствуйте, acDev, Вы писали:

D>А ещё проще так:

D>LoadLibraryEx(lpFileName, hFile, LOAD_LIBRARY_AS_IMAGE)

ругается: error C2065: 'LOAD_LIBRARY_AS_IMAGE' : undeclared identifier

вот доступные из WINBASE.H, как то не густо:
#define DONT_RESOLVE_DLL_REFERENCES 0x00000001
#define LOAD_LIBRARY_AS_DATAFILE 0x00000002
#define LOAD_WITH_ALTERED_SEARCH_PATH 0x00000008
Re[18]: Ошибка загрузки DLL -529697949
От: acDev Россия  
Дата: 13.07.12 13:44
Оценка:
Здравствуйте, cupuyc., Вы писали:

C>ругается: error C2065: 'LOAD_LIBRARY_AS_IMAGE' : undeclared identifier


Попробуйте DONT_RESOLVE_DLL_REFERENCES
Re[19]: Ошибка загрузки DLL -529697949
От: cupuyc.  
Дата: 13.07.12 13:59
Оценка:
Здравствуйте, acDev, Вы писали:

D>Здравствуйте, cupuyc., Вы писали:


C>>ругается: error C2065: 'LOAD_LIBRARY_AS_IMAGE' : undeclared identifier


D>Попробуйте DONT_RESOLVE_DLL_REFERENCES


этот вариант мне не подходит. мне как раз таки нужно что бы он проверял зависимости.
Re[20]: Ошибка загрузки DLL -529697949
От: acDev Россия  
Дата: 13.07.12 15:38
Оценка:
Здравствуйте, cupuyc., Вы писали:

C>этот вариант мне не подходит. мне как раз таки нужно что бы он проверял зависимости.


Ну прочитай сам таблицу импорта и загрузи все "зависимости" через LoadLibraryEx.
Re[21]: Ошибка загрузки DLL -529697949
От: cupuyc.  
Дата: 17.07.12 05:39
Оценка:
Здравствуйте, acDev, Вы писали:

D>Здравствуйте, cupuyc., Вы писали:


C>>этот вариант мне не подходит. мне как раз таки нужно что бы он проверял зависимости.


D>Ну прочитай сам таблицу импорта и загрузи все "зависимости" через LoadLibraryEx.

а почему через LoadLibraryEx ?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.