Пожалуйста, обратите внимание, что пользователь заблокирован
Такая задача - есть DLL, которая экспортирует определенные функции, нужные в моей программе. Напрямую инклудить DLL (как стандартные Windows либы) я не могу, нужно загружать динамически. И тут возникает сложность - допустим, есть в длл функция MD5. Прототип ее такой
. Я не могу ее использовать в программе, хотя пробовал по разному.
1 способ:
объявляю в коде прототип
делаю инклуд либы
И загружаю в коде либу динамически, после вызываю функции через invoke.
Такой код не работает, а вылетает сразу же (в т.ч. при попытке отладки), с сообщением что не найдена такая-то dll.
2 способ:
убираю прототип и инклуд либы, а добавляю
Не компилируется с ошибкой
Как быть? Есть ли какой-то способ, чтобы можно было вызывать эти функции через invoke (т.е. как будто бы длл загружена в память процесса обычным путем), или только юзать GetProcAddress и никак иначе?
Код:
MD5 PROC string :DWORD, result_buffer :DWORD
1 способ:
объявляю в коде прототип
Код:
MD5 PROTO :DWORD, :DWORD
Код:
includelib \masm32\path\mydll.lib
Код:
invoke LoadLibrary,chr$("путь_к_mydll.dll")
invoke MD5,addr gate,addr buffer
Такой код не работает, а вылетает сразу же (в т.ч. при попытке отладки), с сообщением что не найдена такая-то dll.
2 способ:
убираю прототип и инклуд либы, а добавляю
Код:
extrn __imp__MD5@8:DWORD
MD5 equ __imp__MD5@8
Не компилируется с ошибкой
unresolved external symbol ___imp__MD5@8
Как быть? Есть ли какой-то способ, чтобы можно было вызывать эти функции через invoke (т.е. как будто бы длл загружена в память процесса обычным путем), или только юзать GetProcAddress и никак иначе?