Модульное ирование

Тема в разделе "WASM.UNIX", создана пользователем _ir4_Y_, 19 окт 2008.

  1. _ir4_Y_

    _ir4_Y_ New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2007
    Сообщения:
    76
    все время писал программы для никсов на asm + c
    теперь возникла проблема по поводу оборачивания всего этого в классы для создания GUI на QT
    скажите пожалуйста как называть функции чтобы прога на C++ их увидела ?

    например:
    Код (Text):
    1. //c
    2. int my_fun()
    3. {
    4. return 0;
    5. }
    Код (Text):
    1. //c++
    2. extern int my_fun()
    3. int main()
    4. {
    5. return my_fun();
    6. }
    при линковке ругается на то что нет функции my_fun
     
  2. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    extern "C"
     
  3. _ir4_Y_

    _ir4_Y_ New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2007
    Сообщения:
    76
    спасибо
    а что делать если нужно вызвать функцию на асме?
    Код (Text):
    1. //c++
    2. extern "C" int my_asm_fun();
    3. int main
    4. {
    5. my_asm
    6. }
    Код (Text):
    1. //asm
    2. .global my_asm_fun
    3.  
    4. my_asm_fun:
    5. xorl    %eax,%eax
    6. ret
    тут уже extern "C"
    не работает
    как в этом случае объявлять ?
     
  4. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    _ir4_Y_
    Попробу в asm'е писать _my_asm_fun, т.е. с лидирующим подчеркиванием.
     
  5. _ir4_Y_

    _ir4_Y_ New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2007
    Сообщения:
    76
    разобрался!
    надо ставит знак _ перед именем функции на асме
    Код (Text):
    1. .global _my_asm_fun
    2.  
    3. _my_asm_fun:
    4. xorl    %eax,%eax
    5. ret
    еще раз спасибо 2Partner и 2q_q
    Тема закрыта....