我正在尝试使用逆向工程生成类图,但发生了以下情况:
There was an error parsing C:\Documents and Settings\Meus documentos\EA_Documentos\Modelos\Environment\class\Factory.h on line 11. Unexpected symbol: ISIMFactory
You may need to define a language macro.There was an error parsing C:\Documents and Settings\Meus documentos\EA_Documentos\Modelos\Environment\class\Model.h on line 99. Unexpected symbol: ISIMModel
You may need to define a language macro.
还有很多。
这是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);
};
出现此错误消息的原因是什么?
最佳答案
您的代码包含宏定义 (SIMMDLENVv01_EXPORT
) 的使用,它不是 EA 标准宏定义的一部分(其中有很多宏定义主要涵盖 ATL 和 MFC)。
您需要在“Settings->Language Macros”下添加其他内容'(如错误消息中的提示所示)。
注意
在声明 #defined
的宏以接收任意数量的参数时,请使用语法 MACRO()
。
如果您尝试对 Qt 等框架库进行逆向工程,则需要设置其中的许多内容,以便能够对代码进行逆向工程而不会出错。
也许你应该考虑一种不同的策略来在你的模型中引用这些类型和类。
另一种解决方法可能是先单独预处理要导入的所有代码,然后从预处理结果中导入。
关于c++ - Enterprise Architect 逆向工程 : 'Unexpected symbol' error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17931668/