conflicting parameter definition : Vector3 - что это такое?

Тема в разделе "WASM.BEGINNERS", создана пользователем kryndach, 2 июн 2007.

  1. kryndach

    kryndach New Member

    Публикаций:
    0
    Регистрация:
    28 май 2007
    Сообщения:
    55
    Из-за чего может возникать такая ошибка? Я попытался создать процедуру и получил фигу без масла.
    Вот процедура:
    Код (Text):
    1. Vec4Perpen proc Vector3:D3DVECTOR , Vector1:D3DVECTOR , Vector2:D3DVECTOR
    2.  
    3. fld    Vector1.y
    4. fmul Vector2.z
    5. fstp   Vector3.x
    6.  
    7. fld    Vector1.z
    8. fmul Vector2.y
    9. fchs
    10. fadd  Vector3.x
    11. fstp   Vector3.x  
    12.  
    13.  
    14. fld    Vector1.x
    15. fmul Vector2.z
    16. fstp   Vector3.y
    17.  
    18. fld    Vector1.z
    19. fmul Vector2.x
    20. fchs
    21. fadd  Vector3.y
    22. fstp   Vector3.y
    23.  
    24.  
    25. fld    Vector1.y
    26. fmul Vector2.x
    27. fstp   Vector3.z
    28.  
    29. fld    Vector1.x
    30. fmul Vector2.y
    31. fchs
    32. fadd  Vector3.z
    33. fstp   Vector3.z
    34.  
    35. ret
    36. Vec4Perpen endp
    Вызываю процедуру с помощью
    invoke Vec4Perpen,ADDR VectorOut1,ADDR Vector1,ADDR Vector2

    Если надо полный исходник попросите и я его выложу.
     
  2. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    я так понимаю, что D3DVECTOR - это структура, которая больше, чем 1 дворд. Объяви переменные (параметры к функции) как дворды, а потом используй их типа [Vector3].D3DVECTOR.z. Но тут уже (как адресовать параметры) я возможно не прав, т.к. всегда это делал через регистр, а не напрямую.

    __________________
    Ой, малость ошибся. Напрямую и правда нельзя. Придется сначала поместить параметр в регистр, а потом использовать примерно так: [eax].D3DVECTOR.z
     
  3. kryndach

    kryndach New Member

    Публикаций:
    0
    Регистрация:
    28 май 2007
    Сообщения:
    55
    Я объявил переменные как дворды, но ошибка всеравно выводится, разве что без указания переменной
    error A2111: conflicting parameter definition

    Может чтото задал неправильно?
     
  4. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    Код (Text):
    1. Vec4Perpen proc Vector3, Vector1, Vector2:DWORD
    ты так объявил?
     
  5. kryndach

    kryndach New Member

    Публикаций:
    0
    Регистрация:
    28 май 2007
    Сообщения:
    55
    нет. каждую по отдельности.
    да хоть так хоть сяк - ошибка выскакивает.
     
  6. kryndach

    kryndach New Member

    Публикаций:
    0
    Регистрация:
    28 май 2007
    Сообщения:
    55
  7. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    исходник пока не смотрел. Причины еще может быть 2:
    1) если прототип функции объявлен с другим количеством параметров
    2) если глобальные переменные с такими же именами уже где-то объявлены

    П.С.: после объявления параметров как я сказал, ты переписал процедуру (шоб обращаться через регистры, а не напрямую)?
     
  8. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Передаёшь адрес вектора, а в процедуре используешь как структуру.
    Код (Text):
    1. Vec4Perpen proc Vector3, Vector1, Vector2
    2.   mov  edx,Vector3
    3.   fld    [edx].D3DVECTOR.y
    4.   ...
     
  9. kryndach

    kryndach New Member

    Публикаций:
    0
    Регистрация:
    28 май 2007
    Сообщения:
    55
    ща попробую
     
  10. kryndach

    kryndach New Member

    Публикаций:
    0
    Регистрация:
    28 май 2007
    Сообщения:
    55
    Есть - получилось!
    Спасибо большое всем кто помогал!
     
  11. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    дык я ж про это еще во втором топике написал :)