Сейчас на форуме: asfa, bartolomeo, hgdagon (+6 невидимых)

 eXeL@B —› Программирование —› Как создать DLL?
Посл.ответ Сообщение

Ранг: 42.4 (посетитель)
Активность: 0.010
Статус: Участник

Создано: 11 мая 2006 08:29
· Личное сообщение · #1

Как создать на Асме (конкретно - на MASM) свою DLL и заюзать функции из неё в программе?




Ранг: 282.8 (наставник), 24thx
Активность: 0.260
Статус: Участник
win32.org.ru

Создано: 11 мая 2006 08:35
· Личное сообщение · #2

killsniper пишет:
и заюзать функции

этого не помню, вспомнил, ток как компилить:
C:/masm32/bin/ml /c /coff /Cp mydll.asm
C:/masm32/bin/link /DLL /DEF:mydll.def /SUBSYSTEM:WINDOWS /LIBPATH:c:\masm32\lib mydll.obj


-----
may all your PUSHes be POPed!




Ранг: 44.7 (посетитель)
Активность: 0.040
Статус: Участник

Создано: 11 мая 2006 08:38
· Личное сообщение · #3

killsniper пишет:
Как создать на Асме (конкретно - на MASM) свою DLL и заюзать функции из неё в программе?

Блин..... Неужели yandex.ru опять сдох????




Ранг: 282.8 (наставник), 24thx
Активность: 0.260
Статус: Участник
win32.org.ru

Создано: 11 мая 2006 08:45
· Личное сообщение · #4

killsniper, у мня пример есть, кидай мыло в личку...

-----
may all your PUSHes be POPed!




Ранг: 25.0 (посетитель)
Активность: 0.010
Статус: Участник

Создано: 11 мая 2006 14:22
· Личное сообщение · #5

В самом дистрибутиве masm'а имеются примеры DLL'ок и их прикрутка к проге!



Ранг: 42.4 (посетитель)
Активность: 0.010
Статус: Участник

Создано: 11 мая 2006 17:15
· Личное сообщение · #6

Пасибо всем.

Яндекс не сдох, а выдаёт какую-то бодягу.




Ранг: 230.5 (наставник)
Активность: 0.180
Статус: Участник
Norg

Создано: 11 мая 2006 19:01
· Личное сообщение · #7

killsniper Скачай с wasm.ru masm32 там в папке Туториал дохрена примеров

-----
M&#225 enginn renna undan &#254v&#237 sem honum er skapa&#240





Ранг: 122.3 (ветеран)
Активность: 0.050
Статус: Участник

Создано: 11 мая 2006 19:06 · Поправил: intty
· Личное сообщение · #8

%include "c:\nasm\inc\win32n.inc"

global mySetText
export mySetText

global myGetText
export myGetText

;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::
[segment code use32 class='CODE']

..start:

dllstart:

mov eax,1
ret 12

;with using stack frame
;One param - offset to stored string
mySetText:
push ebp
mov ebp,esp

mov esi,[ebp+08h]
mov edi,dword stText
mov ecx,[ebp+0Ch]
rep movsb

pop ebp
ret

;with using stack frame
;One param - offset to buffer recieved text
myGetText:
push ebp
mov ebp,esp

mov esi,dword stText
mov edi,dword [ebp+08h]
mov ecx,[ebp+0Ch]
rep movsb

pop ebp
ret

section .BSS

stText resb 020h

;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

[added]
блин. кажется я масм с насмом попутал. ну может пригодится..



Ранг: 123.7 (ветеран)
Активность: 0.10
Статус: Участник
1nn0$/100

Создано: 11 мая 2006 21:53
· Личное сообщение · #9

Заюзай RadAsm там темплейт готовый. Ну и Iczelion'а почитай.

-----
Blame the victim!





Ранг: 251.8 (наставник), 17thx
Активность: 0.120
Статус: Участник
Seeker

Создано: 11 мая 2006 22:36
· Личное сообщение · #10

killsniper
а можно поинтересоваться, почему именно на асме?

-----
DREAMS CALL US





Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 18 мая 2006 15:06
· Личное сообщение · #11

Хм, раз уж подняли тему, то такой вопрос:
Есть на асме либа, у нее одна функция экспортируется.
Параметр один тоже - тип DWORD
Должен передаваться путь через этот параметр dllке.
Какой тип в делфях этот параметр будет иметь?
PChar пробовал - передает нормально только строку длиной в один символ, если длиннее передаешь, то лабуда приходит какая-то...

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.





Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 18 мая 2006 15:16 · Поправил: Hellspawn
· Личное сообщение · #12

я не знаю конено =) но должно быть норм..
пробовал "stdcall" и т.п. приписать к вызову?

-----
[nice coder and reverser]





Ранг: 307.9 (мудрец), 196thx
Активность: 0.180
Статус: Участник

Создано: 18 мая 2006 15:18
· Личное сообщение · #13

4kusNick
Параметр один тоже - тип DWORD
Такой же будет и в Делфях
Если юзать PChar - то только как масив, тогда все будет ок.

-----
Don_t hate the cracker - hate the code.





Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 18 мая 2006 15:39
· Личное сообщение · #14

Как массив?
А можно поподробней?
Спасибо.

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.




Ранг: 162.2 (ветеран)
Активность: 0.090
Статус: Участник

Создано: 18 мая 2006 16:34
· Личное сообщение · #15

4kusNick
Ф-ия получает строку или указатель на неё?




Ранг: 307.9 (мудрец), 196thx
Активность: 0.180
Статус: Участник

Создано: 18 мая 2006 16:40
· Личное сообщение · #16

4kusNick
Точно не помню, но вроде так:
Var Переменная : PChar[1024];
или
Var Переменная : array [0..255] of PChar;

-----
Don_t hate the cracker - hate the code.




Ранг: 6.7 (гость)
Активность: 0=0
Статус: Участник

Создано: 18 мая 2006 20:40
· Личное сообщение · #17

А что должна выполнять эта функция? Может ей обычный dword просто передать



Ранг: 53.9 (постоянный), 19thx
Активность: 0.040
Статус: Участник

Создано: 19 мая 2006 08:15
· Личное сообщение · #18

Попробуй Integer(PChar('Строка'))




Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 19 мая 2006 11:27
· Личное сообщение · #19

Функция, ну, скажем, вызов обычного мессажбокса (параметр - строка самого сообщения).
Спасибо всем, попробую...

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.



 eXeL@B —› Программирование —› Как создать DLL?
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати