Вызов функции из асм-файла (VS2010)

Тема в разделе "WASM.ASSEMBLER", создана пользователем steelfactor, 10 ноя 2011.

  1. steelfactor

    steelfactor New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    501
    В масме не силен, поэтому прошу совета у коллективного разума )
    Существует простой проект в VS2010 из двух файлов: 1) test.cpp и 2) test.asm
    Необходимые настройки для включения asm'овских файлов сделаны.
    Вот собственно код:
    test.cpp
    Код (Text):
    1. #include "stdafx.h"
    2.  
    3. //extern VOID ShowMessageBox();????
    4.  
    5. int _tmain(int argc, _TCHAR* argv[])
    6. {
    7.     ShowMessageBox();
    8.     return 0;
    9. }
    и test.asm
    Код (Text):
    1. .586
    2. .model flat, stdcall    
    3. option casemap :none  
    4.  
    5. include     <include\windows.inc>
    6. include     <include\kernel32.inc>
    7. includelib          <lib\kernel32.lib>
    8. include     <include\user32.inc>
    9. includelib          <lib\user32.lib>
    10.  
    11. .data
    12.  
    13. sometext db "lalalala", 0
    14.  
    15. .code
    16. PUBLIC ShowMessageBox_start
    17. PUBLIC ShowMessageBox_end
    18.  
    19. ShowMessageBox_start::
    20. ShowMessageBox proc
    21.     invoke MessageBoxA, 0, ADDR sometext,ADDR sometext, MB_OK
    22. ShowMessageBox_end::
    23. ShowMessageBox endp
    24.  
    25. END
    Каким образом из c(c++) кода в рамках отдельного проекта можно вызвать функцию из асм-файла (в данному случае ShowMessageBox())?
     
  2. shchetinin

    shchetinin Member

    Публикаций:
    0
    Регистрация:
    27 май 2011
    Сообщения:
    715
    VOID __stdcall ShowMessageBox();
     
  3. steelfactor

    steelfactor New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    501
    Шайтан, однако ))
    Заработало вот так:
    Код (Text):
    1. extern "C"
    2. {VOID __stdcall ShowMessageBox();}
    shchetinin, besten dank :)
    А как в таком случае (да и можно ли вообще) вызывать макросы из асм-файла?
     
  4. shchetinin

    shchetinin Member

    Публикаций:
    0
    Регистрация:
    27 май 2011
    Сообщения:
    715
    steelfactor
    Нет макросы нельзя , они работают на уровне компиляции , а связывать можно только на уровне линкера . вот такая вот печалька.
     
  5. steelfactor

    steelfactor New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    501
    shchetinin
    Спасибо