c++ - Enterprise Architect 逆向工程 : 'Unexpected symbol' error

标签 c++ enterprise-architect

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

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/

相关文章:

c++ - 变量 'dim'(不是数组)周围的堆栈已损坏

c++ - 在线程中使用 boost::asio::deadline_timer

xml - 从 SVG 文件到 XML 文件的转换

enterprise-architect - 如何隐藏 EA 属性对话框?

add-in - EA Addin 事件参数内容

c++ - 如何使用GTest测试命令行选项解析器

c++ - 用于将 JPEG 图像转换为 TIFF 格式的 C、C++ 或 Objective-C 代码

c++ - 如何利用 sqlite 进行撤消/重做功能?

javascript - 在 SpiderMonkey javascript 1.8 中处理 XML DOM - 函数appendChild(childnode)

c# - Sparx EA .feap 项目图像保存为空白