3

こんにちは私はBrewMPのC++で何が可能で何が不可能かを調べようとしています。

誰かがBrew、特にBrewMPでC ++を使用した経験があり、あまり面倒なことなくこれらをデバイス上で動作させることができたかどうかを言うことができますか?

  • 静的変数/関数
  • テンプレート
  • 例外
  • キャスティングなど。
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. 標準Cライブラリ(stdc lib、またはcランタイム)は、 memsetsprintfなどのBrewMPでは絶対に禁止されています。原因:main()エントリを持つ一般的なプロセスモジュールでは、Cランタイムのプロセスモジュールは、ユーザーのコードがそれらを呼び出す前にすでに自動的に初期化されています。BrewMP mod(mod1)ファイルは動的にロードされ、リンクされます。初期化を呼び出す適切な時間はありません。これらのMODは、Cランタイム初期化を個別に呼び出すべきではありません。

  3. C ++テンプレート関数とテンプレートクラス:テンプレートコードのインスタンス化はコンパイル時に生成され、ロード時と実行時のコードの初期化は必要ありません。デバイスで安全に使用できます。

  4. C ++の例外:テストしていません。デフォルトのARMコンパイラオプションでは、例外はオンになりません。また、例外にはC++RTTIを有効にする必要があります。

  5. C ++キャスト:dynamic_castは大きな問題です。これは、実行時の型識別を有効にし、実行時に型チェックを実行する必要があるためです。static_cast、reinterpret_cast、const_castなどの他のキャストは、コンパイラがコンパイル時にチェックするためのヒントにすぎません。

于 2011-01-10T07:00:22.347 に答える
1

いくつかの問題がありました:

  • 仮想メソッドまたは抽象メソッド
  • 静的およびグローバル変数のサポート
  • グローバルオブジェクトの静的初期化

それらのほとんどは、カスタムポストリンカーを使用して解決できます。それは私にとってはうまくいきました、それがあなたにも適していることを願っています。

于 2011-01-08T21:38:46.557 に答える