【问题标题】:C++ Builder [C++ Error] sysmac.h(58): E2040 Declaration terminated incorrectlyC++ Builder [C++ 错误] sysmac.h(58):E2040 声明错误终止
【发布时间】:2009-03-30 10:56:31
【问题描述】:

我想创建一个不使用 VCL 的 C++ Builder DLL 项目。但我在 sysmac 中收到此错误。有谁知道这个错误的可能原因?

【问题讨论】:

  • 贴出导致问题的代码
  • 这是一个大型项目,包含错误行的单位是C++Builder的系统单位。
  • @samir105--看看这篇文章:catb.org/~esr/faqs/smart-questions.html 即使有一个特定的错误信息,我们也无法在没有看到你的源代码的情况下给你明智的建议。
  • 您是否在您的 dll 项目中的任何位置包含 VCL?

标签: c++ delphi c++builder vcl


【解决方案1】:

猜测(因为我使用 C++ Builder 已经有 5 年了)这是因为 sysmac.h 需要 VCL,来自 VCL Overview

__declspec 关键字是为 VCL 的语言支持 克服前面提到的 项目。 sysmac.h 文件提供 如果需要,您应该使用的宏 使用此关键字。 __declspec 接下来讨论变体

【讨论】:

  • 我不需要 sysmac 和 VCL。我可以在 C++Builder 中没有“__declspec”的情况下导出 DLL 中的函数吗?
  • 我知道你可以使用 C++ builder 构建本地 Win32 库和 dll(我曾经这样做过),但现在手头没有副本,而且我已经有好几年没有使用它了。抱歉,我无法提供更多帮助。
【解决方案2】:

E2040 声明错误终止 (C++)

声明有一个额外的或不正确的终止符号,例如在函数体之后放置一个分号。

在标题和左大括号之间用分号声明的类中声明的 C++ 成员函数也会产生此错误。

http://docwiki.embarcadero.com/RADStudio/XE3/en/E2040_Declaration_terminated_incorrectly_%28C%2B%2B%29

【讨论】:

    【解决方案3】:

    这意味着您在项目中的某处包含了 VCL 标头 - 很可能在编译为 C 单元的文件中(因此出现语法错误)。

    您可以在项目选项中开启“扩展错误信息”来追踪责任模块。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多