Страница 1 из 1

Достать картинку из другой dll

Добавлено: 22 Август 2017, 10:38
kreator
C10. Мульти-dll проект. В одной dll лежат картинки (прилинкованы). Могу ими воспользоваться из другой dll?

Достать картинку из другой dll

Добавлено: 22 Август 2017, 13:06
Игорь Столяров
Тут надо рыть загрузку ресурсов DLL через WinAPI ....

1. Пример для DELPHI: http://pro.dtn.ru/delphi-net/dll-4.html
2. Где-то на CLARIONLIFE был пример загрузки TTF шрифтов из DLL - в принципе, то же самое ...

Достать картинку из другой dll

Добавлено: 22 Август 2017, 14:44
kreator
Я думал что-то полегче, типа через тильду. DLL-ка то моя.

Достать картинку из другой dll

Добавлено: 22 Август 2017, 15:02
Игорь Столяров
kreator писал(а): 22 Август 2017, 14:44DLL-ка то моя.
А так это всё упрощает .... ;)

1. Добавляем в DLL метод GetMyDLLPicture(PictureName),NameFilePicture
Добавляем к PictureName тильду и вызываем вложенную в DLL картинку в IMAGE, оттуда сохраняем в файл TMP папки.
Возвращаем имя файла в TMP папке.

2. В программе ?Image{Prop:Text} = GetMyDLLPicture('COROVA.JPG')

3. Всё .... :)

Достать картинку из другой dll

Добавлено: 22 Август 2017, 15:30
kreator
Похоже, кушает банально "?Image{Prop:Text} ='~COROVA.JPG'", даже если 'COROVA.JPG' в другой dll. Сработало, но мозг не принимает такой простоты.

Достать картинку из другой dll

Добавлено: 23 Август 2017, 2:01
Admin
kreator писал(а): 22 Август 2017, 15:30Похоже, кушает банально "?Image{Prop:Text} ='~COROVA.JPG'"
"Похоже" в данном случае картинка просто с диска грузится. Чуда не будет :)

Достать картинку из другой dll

Добавлено: 23 Август 2017, 10:28
kreator
Admin писал(а): 23 Август 2017, 2:01 "Похоже" в данном случае картинка просто с диска грузится. Чуда не будет :)
Знаю про эту фичу (если нет прилинкованной, то берётся с диска). Явно удалил картинку с диска после линковки. Всё работает. Подозреваю, нужно ещё потестить. Коллега выйдет через полторы недели из отпуска (его dll), потестим повнимательней.

Достать картинку из другой dll

Добавлено: 23 Август 2017, 10:40
Admin
kreator писал(а): 23 Август 2017, 10:28Явно удалил картинку с диска после линковки
Памяти не верю. Cделал тестовый пример. Не работало.
Ждем ваш пример :)

Достать картинку из другой dll

Добавлено: 23 Август 2017, 10:58
Игорь Столяров
kreator писал(а): 23 Август 2017, 10:28Явно удалил картинку с диска после линковки
Проверил. И у меня не работает.
Да по сути и не может работать - в каждом модуле (DLL / EXE) свои ресурсы ...
Ведь можно залинковать 2 разные картинки под одним именем в разные DLL и что тогда покажет вызов с тильдой из EXE ?!
Проверьте, точно нет картинки в ресурсах EXE ? Она могла неявно прилинковаться в исполняемый файл ....

Достать картинку из другой dll

Добавлено: 23 Август 2017, 12:12
kreator
Придётся сделать тестовое приложение. У себя ещё раз проверил - работает даже после перезагрузки компа. Неявно прилинковаться? Не понятно пока как это возможно. В .cwproj этой dll-ки картинки нет.

Достать картинку из другой dll

Добавлено: 23 Август 2017, 12:46
Игорь Столяров
kreator писал(а): 23 Август 2017, 12:12В .cwproj этой dll-ки картинки нет.
Вы же программер ! :) Внутри EXE / DLL файла, в разделе RSRC/IMAGE - все картинки ...
Самый простой способ долезть туда - например в FAR нажать CTRL+PgDn на файле ....

Достать картинку из другой dll

Добавлено: 23 Август 2017, 15:19
kreator
Наверно, я не прав. На тесте разобрался. Есть две процедуры. Находятся в разных dll (Первая процедура в первой dll, вторая соответственно во второй). Обе работают с одной и той же картинкой. Картинка прилинкована, допустим, ко второй dll. Первая процедура вызывает вторую процедуру и после этого первая процедура видит нужную картинку. Всё это работает только в одном треде. Конечно, такой режим работы не устраивает.

Достать картинку из другой dll

Добавлено: 23 Август 2017, 16:37
finsoftrz
Если не ошибаюсь, Мялин когда-то пример выкладывал, как делать ресурсную dll с пиктограммами. Мне тогда по определенным причинам не подошло, а сейчас искать в архивах лениво...

Достать картинку из другой dll

Добавлено: 23 Август 2017, 17:34
Дед Пахом
finsoftrz писал(а): 23 Август 2017, 16:37Если не ошибаюсь, Мялин когда-то пример выкладывал, как делать ресурсную dll с пиктограммами
И я помню такое. Нужен Resource compiler, чтобы прилинковать dll как ресурс. Но это не тот случай, по-видимому.