C++ Bulder 6 и dll написанная на assembler
Добавлено: 09 мар 2005, 20:15
Вот текст dll
.586P
.MODEL Flat,StdCall
PUBLICDLL asmproc ; Функция на экспорт
.DATA
.CODE
DLLMain proc hInstDLL:dword, fdwReason:dword, lpvReserved:dword
uses ebx, esi, edi ; Сохраняем EBX, ESI, EDI
mov eax,1 ; Инициализация прошла успешно
ret ; Выходим
DLLMain endp
;----------------------------------------------------------------------------;
; Функции на экспорт ;
;----------------------------------------------------------------------------;
asmproc proc @@c:byte,@@x:byte,@@y:byte,@@kol:word
mov dh,@@y
mov dl,@@x
mov ah,02h
int 10h
mov ah,09h
mov cx,@@kol
mov bl,07h
xor bh,bh
mov al,@@c
int 10h
ret
asmproc endp
END DLLmain
*--------------------------------------------------------------------------------*
Вот текст вызова функции asmproc
typedef void (WINAPI*cfunc)();
cfunc asmproc;
HINSTANCE dllp = NULL;
dllp = LoadLibrary("dll_new.dll");
if ( dllp == NULL )
MessageBox(this,"Unable to load dll","dll error",1);
asmproc=(cfunc)GetProcAddress((HMODULE)dllp,"asmproc");
if ( asmproc == NULL )
MessageBox(this,"Unable to load asmproc","function error",1);
Проблема начинается вот здесь
asmproc(1,1,1,1);
когда после открытия скобки контектнная справка говорит, что No parametrs expected
И даже если в этом виде я компилирую выдается ошибка
Extra parametr in call.
Хорошо, дело доходит до абсурда прописываю asmproc();
Все ладненько, но естественно как дело доходит до выполнения функция программа с матом вылетает оно и понятно, там все на параметрах то и завязанно. В связи с этим вопрос, почему Builder не видит параметров функции ?
.586P
.MODEL Flat,StdCall
PUBLICDLL asmproc ; Функция на экспорт
.DATA
.CODE
DLLMain proc hInstDLL:dword, fdwReason:dword, lpvReserved:dword
uses ebx, esi, edi ; Сохраняем EBX, ESI, EDI
mov eax,1 ; Инициализация прошла успешно
ret ; Выходим
DLLMain endp
;----------------------------------------------------------------------------;
; Функции на экспорт ;
;----------------------------------------------------------------------------;
asmproc proc @@c:byte,@@x:byte,@@y:byte,@@kol:word
mov dh,@@y
mov dl,@@x
mov ah,02h
int 10h
mov ah,09h
mov cx,@@kol
mov bl,07h
xor bh,bh
mov al,@@c
int 10h
ret
asmproc endp
END DLLmain
*--------------------------------------------------------------------------------*
Вот текст вызова функции asmproc
typedef void (WINAPI*cfunc)();
cfunc asmproc;
HINSTANCE dllp = NULL;
dllp = LoadLibrary("dll_new.dll");
if ( dllp == NULL )
MessageBox(this,"Unable to load dll","dll error",1);
asmproc=(cfunc)GetProcAddress((HMODULE)dllp,"asmproc");
if ( asmproc == NULL )
MessageBox(this,"Unable to load asmproc","function error",1);
Проблема начинается вот здесь
asmproc(1,1,1,1);
когда после открытия скобки контектнная справка говорит, что No parametrs expected
И даже если в этом виде я компилирую выдается ошибка
Extra parametr in call.
Хорошо, дело доходит до абсурда прописываю asmproc();
Все ладненько, но естественно как дело доходит до выполнения функция программа с матом вылетает оно и понятно, там все на параметрах то и завязанно. В связи с этим вопрос, почему Builder не видит параметров функции ?