Ну тогда нужно добавить, что arx-файл получится если не компилировать, а построить (Build) проект.))) подловили. в принципе согласен, но на практике - это одно и то же (да и врядли получится собрать проект без его компиляции или скомпилировать без получения результирующего бинарника - lib, dll, exe, ...). Да и если честно, само слово "Build" воспринимается мной как "сборка".
да и врядли получится собрать проект без его компиляции или скомпилировать без получения результирующего бинарника - lib, dll, exe, ...Собрать без компиляции не получится, а вот скомпилировать и получить *.obj можно запросто. И тогда и *.arx (или *.dll/*.dbx) можно искать долго и упорно. Но это вопрос не о знании ObjectARX, а об умении пользоваться Visual Studio и понимании процесса создания *.exe/*.dll/*.arx/*.dbx/*.crx при помощи VC++.
App02.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __cdecl AcGePoint3d::AcGePoint3d(void)" (__imp_??0AcGePoint3d@@QEAA@XZ)Так что нужно указать для Linker еще и acge20.lib:
E:\RAN\ARX2015\App02\\x64\Release\App02.arx : fatal error LNK1120: 1 unresolved externals
И тогда всё собирается:
------ Build started: Project: App02, Configuration: Release x64 ------
Build started 26.05.2016 16:04:55.
InitializeBuildStatus:
Touching "x64\Release\App02.unsuccessfulbuild".
ClCompile:
All outputs are up-to-date.
Link:
Generating code
Finished generating code
App02.vcxproj -> E:\RAN\ARX2015\App02\\x64\Release\App02.arx
FinalizeBuildStatus:
Deleting file "x64\Release\App02.unsuccessfulbuild".
Touching "x64\Release\App02.lastbuildstate".
Build succeeded.
Time Elapsed 00:00:00.97
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
Вот собрал в архив. *.obj есть, но что с ним делать?*.obj - это результаты компиляции. Они промежуточный результат. Следующий этап (упрощенно) линковка, которая и должна создать arx-файл. Чтобы запустить весь процесс выбирай из меню Build Solution (в русской версии это кажется "Построить решение").
Скажешь что я был неправ? :Dдвоякое чувство... хорошо... если на пальцах и не вдаваясь в подробности, то принцип работы по созданию готового бинарника такой:
О'кей, файл сгенерирован! НО...автокад (2016 и 2015) его не может прочитать. "Не удается загрузить файл...". Код - это пример из поставки ObjectArx2015. Можете запустить его на своем акаде?разрядность автокада и arx одинаковая? или автокад 32bit, а arx - 64bit?
О'кей, файл сгенерирован! НО...автокад (2016 и 2015) его не может прочитать. "Не удается загрузить файл...". Код - это пример из поставки ObjectArx2015. Можете запустить его на своем акаде?Ох. Если бы ты воспользовался ObjectARX Wizard, то я бы не потратил кучу времени на поиск почему у тебя не грузится в AutoCAD arx-файл.
Build started at 21:50...
1>------ Build started: Project: TestApp002, Configuration: Release x64 ------
1>TestApp002.cpp
1> Creating library C:\Work\Apps\ObjectARX\Apps\TestApp002\x64\Release\TestApp002.lib and object C:\Work\Apps\ObjectARX\Apps\TestApp002\x64\Release\TestApp002.exp
1>TestApp002.obj : error LNK2001: unresolved external symbol "public: static class AcRxClass * __cdecl AcEdCommandStack::desc(void)" (?desc@AcEdCommandStack@@SAPEAVAcRxClass@@XZ)
1>TestApp002.obj : error LNK2001: unresolved external symbol acrxSysRegistry
1>TestApp002.obj : error LNK2001: unresolved external symbol "public: static class AcRxResourceInstance const & __cdecl AcRxResourceInstance::empty(void)" (?empty@AcRxResourceInstance@@SAAEBV1@XZ)
1>TestApp002.obj : error LNK2001: unresolved external symbol "public: static bool __cdecl AcRxClass::isDerivedFrom(class AcRxClass const *,class AcRxClass const *)" (?isDerivedFrom@AcRxClass@@SA_NPEBV1@0@Z)
1>C:\Work\Apps\ObjectARX\Apps\TestApp002\x64\Release\TestApp002.arx : fatal error LNK1120: 4 unresolved externals
1>Done building project "TestApp002.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
========== Build completed at 21:50 and took 02,247 seconds ==========
вроде бы подключил все необходимые либыНеа. Не подключил. И это хорошо видно по протоколу.
По документации должно быть так:Это не все. Еще как минимум accore.lib. И скорее всего ещё кое что. Сейчас нет возможности проверить. Добавь все .lib из каталога lib-x64 - не ошибёшься.
AcEd
acad.lib, rxapi.lib, acdb24.lib
Все добавлены..
Насколько я понимаю - если все это слинковать, то всё это добавиться в файл приложения?Нет. Добавится только то, что реально используется.