Использование ассемблерных .lib-файлов в программах на си

Тема в разделе "WASM.BEGINNERS", создана пользователем sysh, 14 дек 2006.

  1. sysh

    sysh New Member

    Публикаций:
    0
    Регистрация:
    2 окт 2006
    Сообщения:
    5
    Объясняю суть проблемы:

    Я написал my.asm-файл, скомпилил его как библиотеку, получил my.lib. В my.asm была описана процедура myproc. Имеется также файл my.inc с прототипом myproc.

    Вопросы такие:

    1.Как подключить my.lib к my_c.c, чтобы можно было использовать myproc в сишной проге?
    2.Нужно ли в my.asm перед описанием myproc писать что-то вроде extrn "C"?

    Всем откликнувшимся заранее спасибо!
     
  2. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    my.asm
    public my_proc

    cl my_c.c my.lib
     
  3. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    добавить в проект, или добавить в командную строку линкеру

    если программа компилится как С++, то в сишном сорце нужно добавить extern "C"
    или так
    #ifdef __cplusplus
    extern "C" {
    #endif

    unsigned long __stdcall crc32(unsigned char *, unsigned long);

    #ifdef __cplusplus
    }
    #endif
     
  4. sysh

    sysh New Member

    Публикаций:
    0
    Регистрация:
    2 окт 2006
    Сообщения:
    5
    Спасибо за ответы!

    Попробую в командной строке прилепить.

    А *.inc-файл с прототипом функции вообще ни причём?
     
  5. sysh

    sysh New Member

    Публикаций:
    0
    Регистрация:
    2 окт 2006
    Сообщения:
    5
    И ещё вопрос!

    А нет ли каких специфических тонкостей, если прога на си работает в режиме ядра (точнее она драйвер)?
     
  6. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    sysh
    Догадайся сам.

    Если ассемблерная функция не расчитана на режим ядра (например, если в ней используются вызовы API), то драйвер накроется.
     
  7. sysh

    sysh New Member

    Публикаций:
    0
    Регистрация:
    2 окт 2006
    Сообщения:
    5
    Чё-то ругается у меня компилятор на такую команду
     
  8. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    Ну раз чето ругается, надо показать ошибку ;)
     
  9. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    sysh

    нужно в строку к линкеру прописывать