Сообщество программистов Autodesk в СНГ
ADN Club => ObjectARX => Тема начата: pucher от 29-11-2018, 23:20:23
-
Здравствуйте. Как-то я запутался. Есть autocad 2013, vs2010 и vs2017 comunity. Установил ObjectARX SDK 2013 и ObjectARX Wizard 2013. В vs2010 в шаблонах проектов Wizard появился. Но Wizard не появляется в vs2017 comunity. Какие тогда версии ObjectARX SDK и ObjectARX Wizard необходимы для разработки под autocad 2013/vs2017? vs2010 не хочу, потому что там банально нет синтаксической подсветки. Спасибо.
-
vs2010 не хочу, потому что там банально нет синтаксической подсветки. Спасибо.
А зря. Вообще-то подсветка и там есть. Но главное вот это:
(https://lh3.googleusercontent.com/-Ocs_OD5yvfs/XABK50WMcNI/AAAAAAAAPU4/CW45Fx0zrJ8NIF1eFlam-U-BYhQDBl6WwCHMYCw/s0/clipboard.png)
Т.е. для компиляции и линковки тебе в любом случае нужна VS 2010 SP1. Теоретически ты можешь создать проект в ObjectARX Wizard 2013 в VS 2010 SP1, а затем открыть этот проект в VS 2017. Но тут будут нюансы. В частности нужно будет указать правильный Platform Toolset = v100.
-
1. Да, требования совместимости версий я видел и тут http://adn-cis.org/forum/index.php?topic=61.0. Но, я полагал, это минимальные версии VS, необходимые для работы. Получается, работают только те версии vs, что там указаны, ни больше, ни меньше?
2. Из п.2 вытекает, если я хочу сделать утилитку для автокада разных версий, мне нужно будет держать на компе несколько версий каждого автокада, для каждого из них свой набор sdk, но и несколько версий vs?
-
1. Да, требования совместимости версий я видел и тут http://adn-cis.org/forum/index.php?topic=61.0. Но, я полагал, это минимальные версии VS, необходимые для работы. Получается, работают только те версии vs, что там указаны, ни больше, ни меньше?
Для компиляции и линковки указанные версии должны быть в обязательном порядке установлены. Дополнительно можно установить и более свежую версию VS, но в ней для проекта необходимо указывать Platform Toolset той версии, которая указана в соответствующей документации ObjectARX SDK.
В этом главное отличие использования ObjectARX и использования AutoCAD .NET API.
2. Из п.2 вытекает, если я хочу сделать утилитку для автокада разных версий, мне нужно будет держать на компе несколько версий каждого автокада, для каждого из них свой набор sdk, но и несколько версий vs?
Именно так. Ну AutoCAD разных версий нужен только для отладки, а вот VS и ObjectARX SDK в обязательном порядке.
-
Для автокада2013 с помощью sdk2013 и vs2010 создал первый проект по ObjectARX Training Tutorial 2013. В настройках проекта указал пути к inc, inc-win32, lib-win32. Построил решение успешно, но с предупреждениями:
------ Rebuild All started: Project: Step01, Configuration: Debug Win32 ------
1> stdafx.cpp
1> dllmain.cpp
1> Step01.cpp
1> HelloWorld.cpp
1> Generating Code...
1> Creating library D:\My programms\c++\Autocad2013\vs2010\Step01\Debug\Step01.lib and object D:\My programms\c++\Autocad2013\vs2010\Step01\Debug\Step01.exp
1>MSVCRTD.lib(cinitexe.obj) : warning LNK4098: defaultlib 'msvcrt.lib' conflicts with use of other libs; use /NODEFAULTLIB:library
1>rxapi.lib(libinit.obj) : warning LNK4099: PDB 'rxapi_cl.pdb' was not found with 'rxapi.lib(libinit.obj)' or at 'D:\My programms\c++\Autocad2013\vs2010\Step01\Debug\rxapi_cl.pdb'; linking object as if no debug info
1> Creating library D:\My programms\c++\Autocad2013\vs2010\Step01\Debug\Step01.lib and object D:\My programms\c++\Autocad2013\vs2010\Step01\Debug\Step01.exp
1>MSVCRTD.lib(cinitexe.obj) : warning LNK4098: defaultlib 'msvcrt.lib' conflicts with use of other libs; use /NODEFAULTLIB:library
1>rxapi.lib(libinit.obj) : warning LNK4099: PDB 'rxapi_cl.pdb' was not found with 'rxapi.lib(libinit.obj)' or at 'D:\My programms\c++\Autocad2013\vs2010\Step01\Debug\rxapi_cl.pdb'; linking object as if no debug info
1> Step01.vcxproj -> D:\My programms\c++\Autocad2013\vs2010\Step01\Debug\Step01.arx
========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========
При загрузке файла в автокад появилась ошибка:
Команда: _appload
Предупреждение: d:\my programms\c++\autocad2013\vs2010\step01\debug\step01.arx выделяет память из MSVCR100D.DLL, однако AutoCAD использует память из MSVCR100.DLL.
Это может вызвать затруднения.
step01.arx несовместим с этой версией AutoCAD.
Сбой AcRxDynamicLinker при загрузке 'd:\my programms\c++\autocad2013\vs2010\step01\debug\step01.arx'
C:\Program Files\Autodesk\AutoCAD 2013\acad.exeНе удается загрузить файл Step01.arx.
Win7x64. Чую, проблема в том что актокад64 (PLATFORM = "Microsoft Windows NT Version 6.1 (x64)) и винда64 , а библиотеки 32 битные. Но в vs2010 Platform доступна только win32.
-
Win7x64. Чую, проблема в том что актокад64 (PLATFORM = "Microsoft Windows NT Version 6.1 (x64)) и винда64 , а библиотеки 32 битные. Но в vs2010 Platform доступна только win32.
Значит ты не полностью инсталлировал VS 2010 SP1. Кроме того попробуй создать проект с помощью ObjectARX Wizard, переключится на Debug x64 и перестрой решение.
P.S.: Кстати, если версия Express, то в ней нет компилятора x64 и нет MFC, которая нужна для многих примеров из ObjectARX SDK.
-
Разобрался как добавить x64 без виззарда. Вроде бы в автокаде запустилось. Только при сборке в ВС написало следующее. Не знаю, сильно ли оно на что-то потом повлияет:
1> Generating Code...
1> Creating library D:\My programms\c++\Autocad2013\vs2010\Step01\x64\Debug\Step01.lib and object D:\My programms\c++\Autocad2013\vs2010\Step01\x64\Debug\Step01.exp
1>rxapi.lib(libinit.obj) : warning LNK4099: PDB 'rxapi_cl.pdb' was not found with 'rxapi.lib(libinit.obj)' or at 'D:\My programms\c++\Autocad2013\vs2010\Step01\x64\Debug\rxapi_cl.pdb'; linking object as if no debug info
1> Step01.vcxproj -> D:\My programms\c++\Autocad2013\vs2010\Step01\x64\Debug\Step01.arx
1> Creating library D:\My programms\c++\Autocad2013\vs2010\Step01\x64\Debug\Step01.lib and object D:\My programms\c++\Autocad2013\vs2010\Step01\x64\Debug\Step01.exp
1>rxapi.lib(libinit.obj) : warning LNK4099: PDB 'rxapi_cl.pdb' was not found with 'rxapi.lib(libinit.obj)' or at 'D:\My programms\c++\Autocad2013\vs2010\Step01\x64\Debug\rxapi_cl.pdb'; linking object as if no debug info
1> Step01.vcxproj -> D:\My programms\c++\Autocad2013\vs2010\Step01\x64\Debug\Step01.arx
========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========
-
Всё нормально. Так и должно быть.