Enterprise Architect逆向工程:'意外符号'错误

时间:2013-07-29 18:38:16

标签: c++ enterprise-architect

我正在尝试使用逆向工程生成类图,但发生了以下情况:

  

在第11行解析C:\ Documents and Settings \ Meus documentos \ EA_Documentos \ Modelos \ Environment \ class \ Factory.h时出错。意外的符号:ISIMFactory
  您可能需要定义语言宏。

     

在第99行解析C:\ Documents and Settings \ Meus documentos \ EA_Documentos \ Modelos \ Environment \ class \ Model.h时出错。意外的符号:ISIMModel
  您可能需要定义语言宏。

还有更多这些。

这是CSIMEnvironmentModel.h

中的相应代码
class SIMMDLENVv01_EXPORT CSIMEnvironmentModel // line 99
: public ISIMModel
, public ISIMEventSource
, public ISIMScheduledModel
, public ISIMExecut
, public ISIMPublisher
{
public:

    CSIMEnvironmentModel(const std::string &a_modelType);
virtual ~CSIMEnvironmentModel(void);

CSIMEnvFactory.h

class SIMMDLENVv01_EXPORT CSIMEnvFactory // line 11
: public ISIMFactory
{
public:
    CSIMEnvFactory();
    virtual ~CSIMEnvFactory(void);
    std::vector<ISIMModel*> InstanceModel(const std::string &a_modelType, const    std::string &a_conf);
};

此错误消息的原因是什么?

1 个答案:

答案 0 :(得分:2)

您的代码包含宏定义(SIMMDLENVv01_EXPORT)的使用,该定义不是EA的标准宏定义的一部分(其中很多内容主要涵盖ATL和MFC)。 您需要在“Settings->Language Macros”下添加其他内容(如错误消息中的提示所示)。

注意
在声明MACRO()的宏以接收任意数量的参数时,请使用语法#defined

如果您正在尝试对Qt等框架库进行反向工程,则需要设置其中许多功能,以便能够对代码进行反向工程而不会出现错误。 也许您应该考虑一种不同的策略来引用模型中的这些类型和类 另一种解决方法可能是单独预处理您想要首先导入的所有代码,并从预处理结果中导入。