C++&asm глобальная переменная

Тема в разделе "WASM.BEGINNERS", создана пользователем sergei132, 29 окт 2007.

  1. sergei132

    sergei132 New Member

    Публикаций:
    0
    Регистрация:
    23 май 2006
    Сообщения:
    8
    Hello!

    у меня есть 2 файла file.cpp и file.asm

    в file.cpp есть глобальная переменная: ULONG x;

    как ее использовать в file.asm?

    пишу вот так в file.asm:

    extern x: dword;

    но не линкуется...
    error LNK2001: unresolved external symbol _x

    помогите плиз с этим простым вопросом...

    Thanx.
     
  2. mathio

    mathio New Member

    Публикаций:
    0
    Регистрация:
    16 июн 2007
    Сообщения:
    110
    Если файл имеет расширение .cpp, автоматически юзаются все соглашения для плюсов, и соотв-но замангливание имен.
    Есть 2 выхода.
    1 Меняем расширение файла на .c, т.е. объявление глобальной переменной можно вынести в отдельный файл.
    2. Инициализацию глобальной переменной обрамляем, таким образом чтобы на нее не действовали соглашения плюсов:
    Код (Text):
    1. #if defined(__cplusplus)
    2. extern "C" {
    3. #endif
    4.  
    5. unsigned int X = 333;
    6.  
    7. #if defined(__cplusplus)
    8. }
    9. #endif
     
  3. sergei132

    sergei132 New Member

    Публикаций:
    0
    Регистрация:
    23 май 2006
    Сообщения:
    8
    точно, вариант 2 подходит :)
    спасибо!!!