Re: Проблема выделения памяти в DLL / C++
От: FlameStorm Земля ya.ru
Дата: 16.12.06 10:38
Оценка: 25 (1)
Упорные поиски ответа не дали, но нашёл сам методом догадок и экспериментов. Как это блин часто бывает.

Думаю это будет полезно здесь ответить на свой же вопрос.

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

hdll = LoadLibraryEx(FileName, NULL, DONT_RESOLVE_DLL_REFERENCES | LOAD_WITH_ALTERED_SEARCH_PATH)

Параметр DONT_RESOLVE_DLL_REFERENCES заставляет ОС загружать DLL в пространство процесса не вызывая точку входа DLL (с параметрами DLL_PROCESS_ATTACH и др.). Вроде бы хорошо — мне эти вызовы и не требовались.
Однако без этого невозможно вызывать из DLL внешние по отношению к ней функции, в т.ч. и выделения памяти, поэтому приходится:

hdll = LoadLibraryEx(FileName, NULL, LOAD_WITH_ALTERED_SEARCH_PATH)

Словил граблями в лоб. Бывает.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.