こんにちは私はBrewMPのC++で何が可能で何が不可能かを調べようとしています。
誰かがBrew、特にBrewMPでC ++を使用した経験があり、あまり面倒なことなくこれらをデバイス上で動作させることができたかどうかを言うことができますか?
- 静的変数/関数
- テンプレート
- 例外
- キャスティングなど。
こんにちは私はBrewMPのC++で何が可能で何が不可能かを調べようとしています。
誰かがBrew、特にBrewMPでC ++を使用した経験があり、あまり面倒なことなくこれらをデバイス上で動作させることができたかどうかを言うことができますか?
以前の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を参照して
ください
標準Cライブラリ(stdc lib、またはcランタイム)は、 memsetやsprintfなどのBrewMPでは絶対に禁止されています。原因:main()エントリを持つ一般的なプロセスモジュールでは、Cランタイムのプロセスモジュールは、ユーザーのコードがそれらを呼び出す前にすでに自動的に初期化されています。BrewMP mod(mod1)ファイルは動的にロードされ、リンクされます。初期化を呼び出す適切な時間はありません。これらのMODは、Cランタイム初期化を個別に呼び出すべきではありません。
C ++テンプレート関数とテンプレートクラス:テンプレートコードのインスタンス化はコンパイル時に生成され、ロード時と実行時のコードの初期化は必要ありません。デバイスで安全に使用できます。
C ++の例外:テストしていません。デフォルトのARMコンパイラオプションでは、例外はオンになりません。また、例外にはC++RTTIを有効にする必要があります。
C ++キャスト:dynamic_castは大きな問題です。これは、実行時の型識別を有効にし、実行時に型チェックを実行する必要があるためです。static_cast、reinterpret_cast、const_castなどの他のキャストは、コンパイラがコンパイル時にチェックするためのヒントにすぎません。
いくつかの問題がありました:
それらのほとんどは、カスタムポストリンカーを使用して解決できます。それは私にとってはうまくいきました、それがあなたにも適していることを願っています。