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

ADN Club => ObjectARX => Тема начата: pucher от 17-12-2018, 21:38:40

Название: Создание проекта без виззарда
Отправлено: pucher от 17-12-2018, 21:38:40
Здравствуйте. Создание проекта при помощи виззарда срабатывает. А вот попытка создать проект с ноля, как описано в Developer's Guide, через Empty Project, не увенчалась успехом. Код следующий:
Код - C++ [Выбрать]
  1. #include "rxregsvc.h"
  2. #include "acutads.h"
  3. #include "stdafx.h"
  4. #include "tchar.h"
  5. #include <aced.h>
  6.  
  7. extern "C" AcRx::AppRetCode
  8. acrxEntryPoint(AcRx::AppMsgCode msg, void* appId)
  9. {
  10.     switch(msg) {
  11.     case AcRx::kInitAppMsg:
  12.         acrxUnlockApplication(appId);
  13.         acrxRegisterAppMDIAware(appId);
  14.         acutPrintf(_T("\nHello World!"));
  15.     break;
  16.     case AcRx::kUnloadAppMsg:
  17.     break;
  18.     }
  19.     return AcRx::kRetOK;
  20. }
При попытке компиляции в строке
Код - C++ [Выбрать]
  1. acutPrintf(_T("\nHello World!"));
обнаруживаются ошибки:
Цитировать
Error   1   error C2664: 'acutPrintf' : cannot convert parameter 1 from 'const char [14]' to 'const ACHAR *'
   2   IntelliSense: argument of type "const char *" is incompatible with parameter of type "const ACHAR *"
Вопросы:
1. Как победить эту ошибку?
2. Почему во всех примерах  Developer's Guide при работе со строкой не используется запись вида _T(x)? Например,
Код - C++ [Выбрать]
  1. acutPrintf("\nExample Application Loaded");
Такая строка даже в проекте, созданном виззардом, вызовет ошибку. Не будут же все примеры неправильными...
Название: Re: Создание проекта без виззарда
Отправлено: Александр Ривилис от 17-12-2018, 21:40:54
pucher,
Прочитай у меня в подписи как следует форматировать код у нас на форуме и исправь у себя в сообщении!
Название: Re: Создание проекта без виззарда
Отправлено: pucher от 17-12-2018, 22:05:55
Прочитай у меня в подписи как следует форматировать код у нас на форуме и исправь у себя в сообщении!
Готово
Название: Re: Создание проекта без виззарда
Отправлено: Александр Ривилис от 17-12-2018, 22:37:42
Готово
Отлично. Теперь по существу вопроса. В каждой из версий ObjectARX и Visual Studio свои особенности настройки проектов. Рекомендую не заморачиваться и использовать ObjectARX Wizard, т.к. запомнить десятки необходимых настроек проекта очень сложно.
1. Как победить эту ошибку?
Проект должен быть Unicode. Тогда _T("...") означает L"...", а не "..." и компиляция проходит нормально.
2. Почему во всех примерах  Developer's Guide при работе со строкой не используется запись вида _T(x)? Например,
Код - C++ [Выбрать]

    acutPrintf("\nExample Application Loaded");

Такая строка даже в проекте, созданном визардом, вызовет ошибку. Не будут же все примеры неправильными...
Многие примеры в нём устаревшие и не учитывают UNICODE-революцию в AutoCAD 2007.
Название: Re: Создание проекта без виззарда
Отправлено: DimVer от 29-05-2024, 22:43:08
Отлично. Теперь по существу вопроса. В каждой из версий ObjectARX и Visual Studio свои особенности настройки проектов. Рекомендую не заморачиваться и использовать ObjectARX Wizard, т.к. запомнить десятки необходимых настроек проекта очень сложно.
Если этот этап вроде бы пройден, а проекты создаются не так часто. Есть ли смысл использовать Wizard? Как я понимаю - это дополнительная обёртка к классам ObjectARX?
Название: Re: Создание проекта без виззарда
Отправлено: Александр Ривилис от 29-05-2024, 22:59:34
Есть ли смысл использовать Wizard? Как я понимаю - это дополнительная обёртка к классам ObjectARX?
Я предпочитаю использовать. Он используется и при создании проекта и при создании классов, унаследованных от классов ObjectARX. Например, реакторы или custom object.