特定のツールチェーン(BlackBerry Playbook NDKに付属しているツールチェーン)を使用しています。GCC4.4.2に基づいていると思います。このツールチェーンを使用して特定のライブラリをコンパイルしようとすると、c++グローバル名前空間のものと思われるもので奇妙な問題が発生します。たとえば、次のようなエラーが発生します。
'::sprintf' has not been declared
GNU c ++標準ライブラリに対してリンクするときに、これらのエラーが発生することはありません。ただし、PlaybookNDKはデフォルトでDinkumwareC ++ライブラリを使用するため、常に各エラーを確認し、通常は同等のC(この場合はstdio.h)を追加する必要があります。私のコントロールが及ばない理由で、GNUc++標準ライブラリにリンクできません。GNUc++標準ライブラリにはこれらの問題はありません。
より大きなプロジェクトをコンパイルしようとすると、これらのエラーが何百も発生する可能性があります。ソースの編集を伴わない回避策はありますか?上記の例では、ファイルには通常、ヘッダーとして「cstdio」が含まれていますが、これは「std」名前空間でsprintfを宣言します。したがって、私が持っている唯一のオプションは、Cヘッダーを含めるか、std名前空間を追加することです。