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

×


Реинжениринг экспортируемых классов С++(Прочитано 9281 раз)
Подскажите, что не так делаю...

Есть набор исходников на С++. Хочу в 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: Реинжениринг экспортируемых классов С++ Ответ #1 : 28 Сентября 2009, 18:07:43
14 строка оказалась за кадром :)))
Не важно какой ты сейчас - большой или маленький, важно - как ты растешь.
Б.А.С.



Re: Реинжениринг экспортируемых классов С++ Ответ #2 : 28 Сентября 2009, 18:17:58
Она не понимает define и ожидает двоеточие

class MyModuleExport : CMyClass



Re: Реинжениринг экспортируемых классов С++ Ответ #3 : 28 Сентября 2009, 18:19:37
Ты давай ей скармливать не исходники, а результаты препроцессинга, тогда все будет нормально.
Правда гора классов появится:)



Re: Реинжениринг экспортируемых классов С++ Ответ #4 : 29 Сентября 2009, 11:30:55
14 строка оказалась за кадром :)))
Это строка где символ {
class MyModuleExport CMyClass               // 13-ая
{                                          // 14-ая

Ты давай ей скармливать не исходники, а результаты препроцессинга, тогда все будет нормально.
Правда гора классов появится:)
Ну как-то это странно ( неужели нельзя научится делать элементарный препроцессинг? Все средства реинжениринга таковы?



Re: Реинжениринг экспортируемых классов С++ Ответ #5 : 29 Сентября 2009, 18:19:06
Сделал тоже самое в Rational Rose 7.0 - все пучком! И никаких дополнительных действий не надо было.
:(



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



Amor, испытание провел. не знаю так или нет. Ошибок не было (сообщений)
Результат  в прицепе. Так ли нет?

Вообщем, всё тоже самое.
Экспортируемых классов в модели нет.
Сообщений в виде выскакиваемых окошек не было и у меня. Ошибки отображались в окне Output.



Вообщем, всё тоже самое.
Экспортируемых классов в модели нет.
Сообщений в виде выскакиваемых окошек не было и у меня. Ошибки отображались в окне Output.
А откуда должны взяться эти самые экспортируемые классы тогда?



Они есть в исходных кодах. А в модели отсутствуют.
И именно на них появлялись сообщения об ошибке.



Re: Реинжениринг экспортируемых классов С++ Ответ #10 : 05 Октября 2009, 14:54:45
Ларчик просто открывался!
1. Меню Settings->Preprocessor Macros
2. Select Language: C++
3. Add New
4. Вбиваем MyModuleExport

Делаем импорт исходников - всё ОК!



Re: Реинжениринг экспортируемых классов С++ Ответ #11 : 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.   

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




 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19