![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 16.01.2011
Сообщений: 168
|
![]()
Допустим имеется динамическая библиотека(dll) написанная на fasm, я ее цепляю к С++ и вызываю нужную функцию как int F = Factorial(3); мне получается в dll в стек(в размере (int)) записывать значение которое нужно вернуть?
![]() |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
![]()
Гуглите "соглашение о вызове". Соглашения о вызове для вызывающей и вызываемой функции должны совпасть, иначе получится нехорошо.
|
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,368
|
![]() |
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 16.01.2011
Сообщений: 168
|
![]()
Я использую соглашение вызова cdecl, то есть и принимать надо также по правилам cdecl... А вот оно что
![]() ![]() |
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 16.01.2011
Сообщений: 168
|
![]()
То есть принцип действия таков(для cdecl): Вначале вызывается функция, она получает нужный результат, записывает его в регистр eax, потом чистится стек, управление с dll передается нашей программе, программа считывает данные с eax и присваивает их нашей переменной?
![]() |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как запустить программу, написанную на Java? | Graf Xandr | Помощь студентам | 2 | 16.12.2011 10:26 |
Как скомпилировать программу написанную в Visual Basic | maldinito | Помощь студентам | 1 | 15.08.2010 23:10 |
Как протестировать написанную программу? | Сергей089 | Общие вопросы Delphi | 6 | 05.12.2008 18:01 |
Как запустить программу, написанную на С#? | Winter | Общие вопросы .NET | 1 | 18.11.2007 13:39 |