Здравствуйте.
Нужно небольшое разъяснение по Assembler + WinAPI.
Как лучше использовать сторонние функции, через import и extern или только extern?
Пример:
1. import и extern - macro_import_function kernel32.dll, _ExitProcess
2. extern - extern _ExitProcess@4
И вызов функции - call _ExitProcess@4.
Сейчас я использую второй вариант и импортирую данные из dll при линковке, так как не хочу работать с макросами. Но я не понимаю, для чего нужен @4 (в данном случае) и откуда это взять? Без @4 линковка с ошибками, что нет defined.
Я думал, что это данные из dll, но об этом ничего не указано.
Пример кода.
extern _CreateWindowExA@48
extern _DefWindowProcA@16
extern _DispatchMessageA@4
extern _ExitProcess@4
extern _GetMessageA@16
extern _GetModuleHandleA@4
extern _IsDialogMessageA@8
extern _LoadImageA@24
extern _PostQuitMessage@4
extern _RegisterClassExA@4
extern _ShowWindow@8
extern _TranslateMessage@4
extern _UpdateWindow@4
Как работать с defined?
Нужно ли на Assembler дополнительно объявлять функции как это происходит у других языков программирования?
Пример для C++.
int WINAPI MessageBox(
_In_opt_ HWND hWnd,
_In_opt_ LPCTSTR lpText,
_In_opt_ LPCTSTR lpCaption,
_In_ UINT uType
);
Нужно небольшое разъяснение по Assembler + WinAPI.
Как лучше использовать сторонние функции, через import и extern или только extern?
Пример:
1. import и extern - macro_import_function kernel32.dll, _ExitProcess
2. extern - extern _ExitProcess@4
И вызов функции - call _ExitProcess@4.
Сейчас я использую второй вариант и импортирую данные из dll при линковке, так как не хочу работать с макросами. Но я не понимаю, для чего нужен @4 (в данном случае) и откуда это взять? Без @4 линковка с ошибками, что нет defined.
Я думал, что это данные из dll, но об этом ничего не указано.
Пример кода.
extern _CreateWindowExA@48
extern _DefWindowProcA@16
extern _DispatchMessageA@4
extern _ExitProcess@4
extern _GetMessageA@16
extern _GetModuleHandleA@4
extern _IsDialogMessageA@8
extern _LoadImageA@24
extern _PostQuitMessage@4
extern _RegisterClassExA@4
extern _ShowWindow@8
extern _TranslateMessage@4
extern _UpdateWindow@4
Как работать с defined?
Нужно ли на Assembler дополнительно объявлять функции как это происходит у других языков программирования?
Пример для C++.
int WINAPI MessageBox(
_In_opt_ HWND hWnd,
_In_opt_ LPCTSTR lpText,
_In_opt_ LPCTSTR lpCaption,
_In_ UINT uType
);
Последнее редактирование: