![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 05.04.2012
Сообщений: 56
|
![]()
Здравствуйте, у меня возникла проблема с динамической загрузкой dll.
Проблемы вызова функции библиотеки находящейся в памяти через GetModuleHandle не возникает. Трабл с ф-ей LoadLibrary. вот код моей тестовой библиотеки Код:
Вот программа импорта ф-ии из dll. Код:
Последний раз редактировалось Stilet; 19.06.2012 в 21:38. |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 11.01.2012
Сообщений: 177
|
![]()
скорее всегда функция экспортируется, то имени отличном от "myfunction", скорее всего там суффикс есть тира "@8". посмотрите таблицу экпорта через LordPE или другую подобую программу
после GetProcAddress обычно проверяют результат её выполнения на нулевой результат
progromore.i2p - первый русскоязычный портал программистов в скрытосети
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 11.01.2012
Сообщений: 177
|
![]()
скорее всегда функция экспортируется, то имени отличном от "myfunction", скорее всего там суффикс есть тира "@8". посмотрите таблицу экпорта через LordPE или другую подобую программу
после GetProcAddress обычно проверяют результат её выполнения на нулевой результат
progromore.i2p - первый русскоязычный портал программистов в скрытосети
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
вам нужно экспортировать строго через def файл.
иначе обрастает постфиксами. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]()
Ещё есть SafeLoadLibrary
|
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
это делфи функция, и дело не в этом.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 05.04.2012
Сообщений: 56
|
![]()
Пепел Феникса
Низкий поклон Вам и всем тем, кто откликнулся. Добавил def файл- проблема решена. Зубодробительные и интуитивно не понятные ямы от майкрософта. Ухайдокал целый вечер на эту мелочь. Если Вам не трудно, подскажите, есть ли еще какие либо методы динамической загрузки Dll? Говорю к тому, что бы не таскать файлы dll, библиотеки экспорта и деф файл. Нужно копаться в таблице экспорта и указывать адрес вызываемой ф-ии из библиотеки вручную , да? |
![]() |
![]() |
![]() |
#8 | ||||
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]() Цитата:
а из чего грузить будете? ![]() Цитата:
библиотека экспорта? может импорт к длл, нужен для статической загрузки длл, и лишь при компиляции приложения нужен(и то при статической линковке) Цитата:
в msdn описаны оба способа экспорта, описано какой когда нужен. Цитата:
просто у вас при импорте было не правильное имя. кратко процитирую ту статью про экспорт. dllexport/dllimport применяется в случае, если нужен статический импорт в итоге. причем как длл, так и приложение её применяющее пишется на одной версии компилятора. этот метод кодирует параметры в постфикс имени функции. например функция void __stdcall do(void*); будет экспортирована как do@4. def файл применяет для явного задания имен экспортируемых функций и их индексов. применяется для динамической загрузки(так как имя будет строго то что вы задали) и в случае если разные версии компилятора(в том числе разные ЯП) Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. Последний раз редактировалось Пепел Феникса; 20.06.2012 в 16:42. |
||||
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 05.04.2012
Сообщений: 56
|
![]()
Про Dll и таблицу экспорта я конечно от спешки намелил невесть чего. В общем теперь все стало ясно. Еще раз Большое спасибо
Последний раз редактировалось Dizelektwo; 20.06.2012 в 16:59. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Динамическая загрузка статического метода из DLL | Granus | Общие вопросы C/C++ | 6 | 15.02.2012 15:47 |
Динамическая загрузка формы из DLL | grominfo | Помощь студентам | 1 | 15.11.2011 17:10 |
Посоветуйте с DLL (динамическая загрузка) | yasic | Общие вопросы Delphi | 4 | 18.01.2011 18:24 |
[DLL] Загрузка и выгрузка dll в/из чужого процесса | Человек_Борща | Win Api | 4 | 28.02.2010 17:47 |
Динамическая загрузка DLL | ImportDLL | Общие вопросы C/C++ | 2 | 12.06.2009 11:33 |