0
私はリング0のCアプリケーションでfloatまたはdouble値を使用しようとしているが、イムは、リンカエラーを取得:Cカーネルモード/リング0 - フロート/ダブル値
Fehler LNK1120 1 NICHTのaufgelösteExterne
Fehler LNK2001 Nichtaufgelöstesexternesシンボル "_fltused"。
float test = 1.2;
どうすればこのエラーを解決できますか?
本当にC++かCですか?とにかく、これがLinuxカーネルであると仮定すると、浮動小数点演算はサポートされません。固定長で必要とされる精度がintまたはlong longで操作を実行できます。 –
@AjayBrahmakshatriya:Linuxカーネルは、 "ハード"フロート、つまりハードウェアでサポートされている浮動小数点をサポートしていません。しかし、特にARMの場合、コンパイラはしばしばライブラリサポートを使用して "ソフト"浮動小数点を使用することができます。これはCPUとカーネルにとって透過的です。 – MSalters
あなたのコンパイラはあなたのプログラムを普通のユーザスペースプログラムのようにコンパイルします。あなたのカーネルモードプログラム用の標準Cライブラリがない(おそらく)ので、いくつかのシンボルがありません。浮動小数点数と倍数を使用しないでください。多くの場合、代わりに整数または固定小数点演算を使用することができます。 '_fltused'を' extern "C" {unsigned int _fltused = 1;}として定義することができます。 } '(正確な型を試してみる必要があるかもしれませんが)より多くのコードを書くときには、おそらくより多くのシンボルが欠けているでしょう。 – pvc