3

Hi I'm trying to find out what is and isn't possible with C++ on BrewMP.

Does anybody have first hand experience of using C++ with Brew, specifically BrewMP, and can say if they have managed to get these things working on a device without too much hassle:

  • static variables/functions
  • templates
  • exceptions
  • casting etc.
4

2 回答 2

2
  1. 在 Brew3.X 之前,不支持全局变量和静态变量。但是在 Brew MP 中,有一个 ELF2MOD 工具。有了这个,您可以使用全局和静态变量。
    查看您的 SDK 路径,例如:
    C:\Program Files\Qualcomm\Brew MP SDK\Toolset 7.10 Rev 10.0.1489821\bin

    如果您的全局或静态数据是非 POD(C++ 对象,必须调用 C++ 类构造函数) ,请不要使用它。见 https://developer.brewmp.com/forum/using-static-variables-classes-0

  2. BrewMP 中绝对禁止使用标准 C 库(stdc 库或 c 运行时),例如memsetsprintf。原因:在带有 main() 入口的通用进程模块中,C 运行时的那些在用户代码调用它们之前已经自动初始化。BrewMP mod (mod1) 文件是动态加载和链接的。没有合适的时间调用初始化,这些MOD不应该单独调用C运行时初始化。

  3. C++ 模板函数和模板类:模板代码实例化在编译时生成,它们不需要任何加载时和运行时代码初始化。它们可以在设备中安全使用。

  4. C++ 例外:我没有测试它。在默认的 ARM 编译器选项中,未打开异常。并且异常需要启用 C++ RTTI。

  5. C++ cast:dynamic_cast 是个大问题,因为它需要支持运行时类型识别,并在运行时进行类型检查。其他类型转换,例如 static_cast、reinterpret_cast 和 const_cast,只是编译器在编译时检查的提示。

于 2011-01-10T07:00:22.347 回答
1

有一些问题:

  • 虚拟或抽象方法
  • 静态和全局变量支持
  • 全局对象的静态初始化

其中大部分都可以使用自定义post-linker来解决。它对我来说很好,希望它也适合你。

于 2011-01-08T21:38:46.557 回答