Форум Сообщества Аналитиков

Общий раздел => ПО Аналитика => Sparx => Тема начата: Amor от 28 Сентября 2009, 18:03:01

Название: Реинжениринг экспортируемых классов С++
Отправлено: Amor от 28 Сентября 2009, 18:03:01
Подскажите, что не так делаю...

Есть набор исходников на С++. Хочу в EA7.0 закинуть диаграмму классов. Причем интересуют в первую очередь классы экспортируемые из модуля, который я исследую.

И вот встречается код примерно такого содержания:
      #if defined ( BUILD_MYMODULE_DLL )
          #define MyModuleExport _declspec ( dllexport )
      #else
          #define MyModuleExport _declspec ( dllimport )
      #endif

class MyModuleExport CMyClass
{
   
public:
// bla-bla-bla
};

И именно этот класс не попадает в диаграмму и в окне Output выдается сообщение
Цитировать
There was an error parsing <пуь>\myclass.h on line 14.  Unexpected symbol: {
You may need to define a language macro.   

Может какая элементарная вещь, подскажите хотя бы в каком направлении копать. Спасибо :)
Название: Re: Реинжениринг экспортируемых классов С++
Отправлено: bas от 28 Сентября 2009, 18:07:43
14 строка оказалась за кадром :)))
Название: Re: Реинжениринг экспортируемых классов С++
Отправлено: Денис Иванов от 28 Сентября 2009, 18:17:58
Она не понимает define и ожидает двоеточие

class MyModuleExport : CMyClass
Название: Re: Реинжениринг экспортируемых классов С++
Отправлено: Денис Иванов от 28 Сентября 2009, 18:19:37
Ты давай ей скармливать не исходники, а результаты препроцессинга, тогда все будет нормально.
Правда гора классов появится:)
Название: Re: Реинжениринг экспортируемых классов С++
Отправлено: Amor от 29 Сентября 2009, 11:30:55
14 строка оказалась за кадром :)))
Это строка где символ {
class MyModuleExport CMyClass               // 13-ая
{                                          // 14-ая

Ты давай ей скармливать не исходники, а результаты препроцессинга, тогда все будет нормально.
Правда гора классов появится:)
Ну как-то это странно ( неужели нельзя научится делать элементарный препроцессинг? Все средства реинжениринга таковы?
Название: Re: Реинжениринг экспортируемых классов С++
Отправлено: Amor от 29 Сентября 2009, 18:19:06
Сделал тоже самое в Rational Rose 7.0 - все пучком! И никаких дополнительных действий не надо было.
:(
Название: Re: Реинжениринг экспортируемых классов С++
Отправлено: Galogen от 29 Сентября 2009, 23:12:22
Сделал тоже самое в Rational Rose 7.0 - все пучком! И никаких дополнительных действий не надо было.
:(
Пришлите мне исходники Ваших скриптов. Я попробую на 7.5. Может ЕА что-то исправил в новых билдах.
Хотя, если честно сомневаюсь. Они очень так хитро поступили, почти как 1С. Сделали такой конструктор, некоторые части реализовали до определенной степени реализации, а другие отдали внешним третьим лицам на совершенствование. Но за отдельную плату:)
Название: Re: Реинжениринг экспортируемых классов С++
Отправлено: Amor от 01 Октября 2009, 12:35:41
Amor, испытание провел. не знаю так или нет. Ошибок не было (сообщений)
Результат  в прицепе. Так ли нет?

Вообщем, всё тоже самое.
Экспортируемых классов в модели нет.
Сообщений в виде выскакиваемых окошек не было и у меня. Ошибки отображались в окне Output.
Название: Re: Реинжениринг экспортируемых классов С++
Отправлено: Galogen от 01 Октября 2009, 13:37:41
Вообщем, всё тоже самое.
Экспортируемых классов в модели нет.
Сообщений в виде выскакиваемых окошек не было и у меня. Ошибки отображались в окне Output.
А откуда должны взяться эти самые экспортируемые классы тогда?
Название: Re: Реинжениринг экспортируемых классов С++
Отправлено: Amor от 01 Октября 2009, 14:10:59
Они есть в исходных кодах. А в модели отсутствуют.
И именно на них появлялись сообщения об ошибке.
Название: Re: Реинжениринг экспортируемых классов С++
Отправлено: Amor от 05 Октября 2009, 14:54:45
Ларчик просто открывался!
1. Меню Settings->Preprocessor Macros
2. Select Language: C++
3. Add New
4. Вбиваем MyModuleExport

Делаем импорт исходников - всё ОК!
Название: Re: Реинжениринг экспортируемых классов С++
Отправлено: Galogen от 05 Октября 2009, 21:08:06
Что-то у меня после вашего совета вот что выдало

There was an error parsing D:\Мусор\include\cmndline.h on line 69.  Unexpected symbol: CCommandLine   
You may need to define a language macro.   
There was an error parsing D:\Мусор\include\debugtools.h on line 10.  Unexpected symbol: LoadDebugReporter   
You may need to define a language macro.   
There was an error parsing D:\Мусор\include\eventlog.h on line 211.  Unexpected symbol: {   
You may need to define a language macro.   
There was an error parsing D:\Мусор\include\ilogimpl.h on line 7.  Unexpected symbol: ITCS   
You may need to define a language macro.   
There was an error parsing D:\Мусор\include\log.h on line 33.  Unexpected symbol: {   
You may need to define a language macro.   

И пусто в диаграммах