Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Системное программирование и WinAPI > Ошибка вызова Dll в которой есть EhLib56 на WinXP |
Автор: KAS77 8.1.2013, 13:55 | ||
Доброго времени суток! ОС - XP sp3 Появилась проблема вызова Dll в которой есть DBGridEh (версия 5.6 для Builder 5.0) из другой Dll в которой так же есть DBGridEh (версия 5.6 для Builder 5.0) в обоих Dll добавлены msimg32.lib потому как по другому не линкуются - ругается на AlphaBlend. Если вызывать из приложения где нет DBGridEh (версия 5.6 для Builder 5.0) и соответственно msimg32.lib - то DLL находится и вызывается ф-я Пробовал запускать на Windows7 - работает. На XP - нет. код:
выходит ошибка: 8 - Недостаточно памяти для обработки команды. до параметров внешней ф-ии даже не доходит. Может кто сталкивался? Подскажите чего делать. |
Автор: Dem_max 8.1.2013, 16:18 |
а точно "Dll_AAA" существует ??? |
Автор: artsb 8.1.2013, 21:03 |
Давно я читал про это дело, но возможно... При загрузке библиотеки, система подгружает все библиотеки, которые требуются для загружаемой. Возможно, у вас имеет место вложенная зависимость, когда вашей библиотеке требуется другая, которой требуется ваша. Происходит зацикливание и переполнение памяти. Посмотрите в Диспетчере задач, что происходит с вашей программой при загрузке этой библиотеки. Так же, попробуйте открыть вашу библиотеку с помощью программки http://www.dependencywalker.com/. Возможно, она что-то подскажет. Так же, посмотрите http://www.codeproject.com/Questions/195706/LoadLibrary-error-code-0x00000008. |
Автор: KAS77 9.1.2013, 06:48 | ||||||
Да в этом коде ошибка была. (много раз пробовал по всякому вызывать) ![]() Все Dll лежат в одной папке, запускаются из других приложений. А одна из другой не хочет. Что то с памятью происходит. Скорей всего в EHLib56 есть что то работающее на Win7, а на XP проблемы с памятью, или EHLib56 нужны Dll какие то (повидимому связанные с графикой). Еще раз попробывал - на Win7 - работает. надо так:
сообшение выходит: 8 - Недостаточно памяти для обработки команды. и после этого все приложение выгружается. В диспетчере ни чего не видно. Добавлено @ 06:50
Спасибо за ссылочки. Буду пробовать. |
Автор: xvr 12.1.2013, 10:49 |
У Windows весьма специфичные взгляды на то, где искать DLL'и. Не зря раньше программы пытались все свои dll в System32 записать ![]() |
Автор: KAS77 12.1.2013, 12:49 | ||
Пробовали смотреть программой Dependency Walker - ругалась на нехватку 4-х Dll, скачали, засунули в system32, Dependency Walker - все Ок! А вызов одной Dll из другой - ошибку дает. Причем если в обоих Dll есть GridEh 5.6 . Сделал вторую Dll с GridEh 2 или 3 линейки - она вызывается из первой. Ошибка гдето в GridEh 5.6 в смеси с XP. Приходится теперь на 2-х компах сидеть. ![]() |