特定の API レベル用にコードをコンパイルしたいと考えています。たとえば、API レベル 7 です。私は ndk-8 を使用しています。これにはオプションがありますか?
現在、Windows コンソールで ndk-build.cmd コマンドを使用してコンパイルしています。どのAPIレベルがサポートされているかを知る方法がわかりません。
特定の API レベル用にコードをコンパイルしたいと考えています。たとえば、API レベル 7 です。私は ndk-8 を使用しています。これにはオプションがありますか?
現在、Windows コンソールで ndk-build.cmd コマンドを使用してコンパイルしています。どのAPIレベルがサポートされているかを知る方法がわかりません。
これは(NDKドキュメントでも)十分に文書化されていないようですが、Application.mk(ルートAndroid.mkと同じディレクトリ)がある場合、APP_PLATFORM:= android-7(またはその他)の行がある場合あなたが望むプラットフォームバージョン)、それはそれに合わせて構築されます。これは、Application.mkのNDKドキュメントには記載されていません。ドキュメントによると、Android.mkにTARGET_PLATFORM行を配置すると、それが使用されますが、それが機能しないという情報があるようです。
素晴らしい反応、ありがとう、カール、あなたは私の命を救ってくれました。
「APP_PLATFORM := android-7」を使用していますが、動作します。この行を追加すると、コンパイル時に関数が実装されていないというエラーが表示されました。次に、その実装をコードに入れると、機能します!
新しいAndroidバージョンにはその機能があると思いますが、android-7にはありません。
関数はwcstombsです(stdlibにあります)
そしてその実装は
size_t wcstombs(register char *s, register const wchar_t *pwcs, size_t n){
register int i = n;
while (--i >= 0) {
if (!(*s++ = *pwcs++))
break;
}
return n - i - 1;
}
ありがとう