|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
19.06.2012, 21:09 | #1 |
Пользователь
Регистрация: 05.04.2012
Сообщений: 56
|
Динамическая загрузка dll
Здравствуйте, у меня возникла проблема с динамической загрузкой dll.
Проблемы вызова функции библиотеки находящейся в памяти через GetModuleHandle не возникает. Трабл с ф-ей LoadLibrary. вот код моей тестовой библиотеки Код:
Вот программа импорта ф-ии из dll. Код:
Последний раз редактировалось Stilet; 19.06.2012 в 21:38. |
19.06.2012, 21:30 | #2 |
Форумчанин
Регистрация: 11.01.2012
Сообщений: 177
|
скорее всегда функция экспортируется, то имени отличном от "myfunction", скорее всего там суффикс есть тира "@8". посмотрите таблицу экпорта через LordPE или другую подобую программу
после GetProcAddress обычно проверяют результат её выполнения на нулевой результат
progromore.i2p - первый русскоязычный портал программистов в скрытосети
|
19.06.2012, 21:36 | #3 |
Форумчанин
Регистрация: 11.01.2012
Сообщений: 177
|
скорее всегда функция экспортируется, то имени отличном от "myfunction", скорее всего там суффикс есть тира "@8". посмотрите таблицу экпорта через LordPE или другую подобую программу
после GetProcAddress обычно проверяют результат её выполнения на нулевой результат
progromore.i2p - первый русскоязычный портал программистов в скрытосети
|
19.06.2012, 22:16 | #4 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
вам нужно экспортировать строго через def файл.
иначе обрастает постфиксами. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
19.06.2012, 22:26 | #5 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,426
|
Ещё есть SafeLoadLibrary
|
19.06.2012, 22:39 | #6 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
это делфи функция, и дело не в этом.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
20.06.2012, 13:55 | #7 |
Пользователь
Регистрация: 05.04.2012
Сообщений: 56
|
Пепел Феникса
Низкий поклон Вам и всем тем, кто откликнулся. Добавил def файл- проблема решена. Зубодробительные и интуитивно не понятные ямы от майкрософта. Ухайдокал целый вечер на эту мелочь. Если Вам не трудно, подскажите, есть ли еще какие либо методы динамической загрузки Dll? Говорю к тому, что бы не таскать файлы dll, библиотеки экспорта и деф файл. Нужно копаться в таблице экспорта и указывать адрес вызываемой ф-ии из библиотеки вручную , да? |
20.06.2012, 16:32 | #8 | ||||
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
а из чего грузить будете? Цитата:
библиотека экспорта? может импорт к длл, нужен для статической загрузки длл, и лишь при компиляции приложения нужен(и то при статической линковке) Цитата:
в msdn описаны оба способа экспорта, описано какой когда нужен. Цитата:
просто у вас при импорте было не правильное имя. кратко процитирую ту статью про экспорт. dllexport/dllimport применяется в случае, если нужен статический импорт в итоге. причем как длл, так и приложение её применяющее пишется на одной версии компилятора. этот метод кодирует параметры в постфикс имени функции. например функция void __stdcall do(void*); будет экспортирована как do@4. def файл применяет для явного задания имен экспортируемых функций и их индексов. применяется для динамической загрузки(так как имя будет строго то что вы задали) и в случае если разные версии компилятора(в том числе разные ЯП) Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. Последний раз редактировалось Пепел Феникса; 20.06.2012 в 16:42. |
||||
20.06.2012, 16:56 | #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 |