Доброе время суток, столкнулся с задачей скрестить fasm и delphi, есть некоторая библиотека в которой приведены оч. важные функции, написана на fasm(мной), проблема в том, что использоваться эта библиотека будет в delphi 2009... 1. Как передать из delphi параметры для вызова функций? 2. Какое соглашение использовать, stdcall или в 2009 что-то по другому? 3. Кто ни будь сталкивался с подобной проблемой? Есть подводные камни? Заранее спасибо...
С 2009 не сталкивался, в более ранних главная проблема -- нелюбовь к COFF-файлам, почему также MASM использовать проблематично (у меня не получалось, делал в TASM).
Т.е. ты DLL на фасме хочешь использовать в EXE на делфи? А в чем проблема? Ну я так делал. Только длл была на масме. В Делфи объявляешь функцию, пишешь stdcall однозначно, ф топку другое. Ну а потом используешь как обычную функцию. Не пойму, в чем сложность. Вот как выглядело мое объявление: Код (Text): function Infect(pVict, pTroj: PChar):Boolean; stdcall; external 'natali.dll'
В delphi 2009 точно работают stdcall, pascal и cdecl. Ну и её собственный вариант fastcall, естественно, но я бы его воздержался использовать, если такую функцию могут вызвать из программы на другом языке. Работоспособность всяких извращений а-ля __msfastcall не было повода проверить.
__msfastcall <> __fastcall т.к. в дельфийском fastcall юзаются eax, edx, ecx, а в msvc только eax, edx