среда, 12 марта 2014 г.

Об управляемых "заглушках" из ObjectARX SDK и целевой платформе (x86\x64)

Как известно, управляемые "заглушки" находятся в ObjectARX SDK в подкаталогах inc, inc-win32 и inc-x64. В идеальном варианте, хотелось бы всегда компилировать код как AnyCPU, однако не во всех случаях это возможно и порой приходится создавать сборки отдельно для x86 и отдельно для x64.

В ObjectARX SDK 2009 каталог inc не содержит управляемых "заглушек" - они там появились лишь начиная с версии 2011. До этого же их версии находились по подкаталогам inc-win32 и inc-x64. Изначально, базовый набор "заглушек", подключаемых в управляемом плагине AutoCAD состоял из файлов AcDbMgd.dll и AcMgd.dll. Позднее, начиная с версии 2013, к этому перечню добавился файл AcCoreMgd.dll.

Согласно заявлению сотрудников Autodesk - в том случае, если в управляемом плагине подключается "заглушка" не из каталога inc, то такой плагин следует компилировать не как AnyCPU, но отдельно под x86 и отдельно под x64при этом переподключая "заглушки" из соответствующего каталога - для каждой платформы свои "заглушки". Т.е. если "заглушки" подключаются из inc-win32, то и компилировать такой код следует только для x86. А ежели нужно компилировать для x64, то в подключенных ссылках нужно переуказывать заглушки из каталога inc-x64, вместо заглушек из inc-win32. В том же случае, если в плагине используются лишь заглушки каталога inc, то его можно компилировать как AnyCPU.

Порой нарушение этого правила может и сойти с рук: например проект, в котором подключены "заглушки" из inc-x64, может быть откомпилирован как x86, после чего успешно работать без каких либо проблем. Или же, как вариант: разработчиком могут быть подключены заглушки не из каталога inc, с последующей компиляцией сборки как AnyCPU. Однако компания Autodesk (в лице Stephen Preston) предупреждает, что в ряде случаев (какие именно - не уточнялось), при подобном подходе могут возникать проблемы.

Комментариев нет: