Сообщество программистов Autodesk в СНГ

ADN Club => ObjectARX => Тема начата: Дмитрий Гилин от 29-12-2016, 14:43:17

Название: Миграция ObjectARX2013->ObjectARX2015
Отправлено: Дмитрий Гилин от 29-12-2016, 14:43:17
Добрый день, коллеги.

Есть компонент, написанный на C++ & ObjectARX2013.
Требуется адаптировать его к ObjectARX2015 (а затем к ObjectARX2017).
В коде используется тип 'ulong'.
Этот тип определен в ObjectARX2013\inc\adesk.h:

Код - C++ [Выбрать]
  1. #ifdef __LP64__
  2.     typedef UInt32         ulong;
  3. #else
  4.     typedef unsigned long  ulong;
  5. #endif
  6.  

В ObjectARX2015\inc\adesk.h этот тип не определен.
Просмотрел документацию ObjectARX2015, в разделе изменений ничего по этому поводу не нашел.
Как быть?
Название: Re: Миграция ObjectARX2013->ObjectARX2015
Отправлено: Александр Ривилис от 29-12-2016, 14:54:59
1. Не забывай про правильное форматирование кода на форуме (у меня в подписи).
2. Пойдём сначала формальным путём:
Проанализируем adesk.h в ObjectARX 2013:

Код - C++ [Выбрать]
  1. #ifdef __LP64__
  2.     typedef unsigned int   UInt32;
  3.     typedef int            Int32;
  4. #else
  5.     typedef unsigned long  UInt32;
  6.     typedef long           Int32;
  7. #endif //__LP64__
  8.  
  9. #ifdef __LP64__
  10.     typedef UInt32         ulong;
  11. #else
  12.     typedef unsigned long  ulong;
  13. #endif //__LP64__
Я пропустил в коде незначимое и комментарии. Вывод ulong и UInt32 - одно и тоже. В ObjectARX 2015 и 2017 есть тип UInt32, так что можешь им пользоваться смело вместо ulong. Или напиши что-то типа:
Код - C++ [Выбрать]
  1. typedef UInt32         ulong;
С другой стороны возможно следует выяснить контекст и понять должен ли он быть 32-битным и тогда UInt32 или 64-битным и тогда UInt64.
Название: Re: Миграция ObjectARX2013->ObjectARX2015
Отправлено: Дмитрий Гилин от 29-12-2016, 15:13:29
Александр, спасибо за скорость!
Попробую UInt32.