Настройка вызова С функции з asm в Visual Studio 2015 - Assembler
Формулировка задачи:
Здравствуйте, помогите пожайлуста решить проблему с вызовом printf или любой другой сишной функции c ассемблера. Сначала я создал пустой проект в Visual Studio 2015, добавил asm файл, сделал нужные настройки проекта, чтоб скомпилировать asm файл. Но проблема в том что я никак не можу побороть проблему
При том что функции Windows API вызываються нормально, кто-нибудь сталкивался с этим?
Параметры линкера:
Код программы:
unresolved external symbol _printf@0 referenced in function _main@0
/OUT:"C:\Users\apple\Documents\SP_Lab7\Debug\SP_Lab7_Demo.exe" /MANIFEST /NXCOMPAT /PDB:"C:\Users\apple\Documents\SP_Lab7\Debug\SP_Lab7_Demo.pdb" /DYNAMICBASE "libcmt.lib" "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" /MACHINE:X86 /INCREMENTAL:NO /PGD:"C:\Users\apple\Documents\SP_Lab7\Debug\SP_Lab7_Demo.pgd" /SUBSYSTEM:WINDOWS /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /ManifestFile:"Debug\SP_Lab7_Demo.exe.intermediate.manifest" /ERRORREPORT:PROMPT /NOLOGO /TLBID:1
.586 .model flat, stdcall option casemap:none ExitProcess PROTO return:DWORD printf PROTO .data text BYTE "Text", 0 .code main PROC push offset text call printf invoke ExitProcess,0 main ENDP end main
Решение задачи: «Настройка вызова С функции з asm в Visual Studio 2015»
textual
Листинг программы
.586 .model flat, stdcall option casemap:none includelib msvcrt.lib ExitProcess PROTO return:DWORD extern printf:near .data text BYTE "Text", 0 .code main PROC push offset text call printf add esp,4 invoke ExitProcess,0 main ENDP end main
Объяснение кода листинга программы
- Объявлен сегмент .586
- Объявлен модель .model flat, stdcall
- Объявлено опция casemap:none
- Включена библиотека msvcrt.lib
- Детальный прототип функции ExitProcess
- Указатель на функцию printf
- Создана переменная типа data с именем text и значением
Text
- Создана процедура main
- В процедуре main добавлен стек с смещением текста
- Вызвана функция printf
- Стек уменьшен на 4 после вызова функции printf
- Вызвана функция ExitProcess с аргументом 0
- Процедура main завершена
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д