Есть ли какие-то ограничения на функции, експортируемые из DLL? Имеетьса следующая функция в исходнике DLL'ки: proc MyFunc p1,p2 .if [p1]==NULL or [p2]==NULL ret .endif ; ;Некоторый код... ; ret endp Она должна експортироватьса. Если ее убрать из таблицы експорта, то все компилитьса нормально. Но если только вписать ее в таблицу: section '.edata' export data readable export 'PAL.dll',\ MyFunc,'MyFunc' То компилер скажет: Illegal Instruction .if[..arg?0000671]==NULL or[..arg?000066D]==NULL показывая на .if [p1]==NULL or [p2]==NULL, типа недопустимая инструкция. Может кто-то подскажет в чем проблема? P.S.LL создаетьса в фасме, если кто по исходнику не определил P.P.S.:На цифры 0000671 и 000066D не обращайте внимания-в настоящей программе параметров передаетьса больше и в другом порядке.
Ага. Поддерживает. Даже компилит. Если функцию не експортировать. А если експортировать, то даже такой код не работает: mov eax,p1
Вместо: .if [p1]==NULL or [p2]==NULL нужно быть: .if [p1]=NULL | [p2]=NULL А вместо: mov eax,p1 нужно быть: lea eax,[p1] (потому что [p1]=[ebp+8]) proc есть ассемблирован толко если нужен - если он не экспортирован, он не нужен и ассемблер пропускает его. PS. Извините, мой русский язык плохый.