calc コマンドライン電卓の .NET 版です。このアプリケーションは、CalcLib ライブラリラッパーを使用して基本的な整数演算を実行します。
概要
CalcApp は、2つの整数と演算子を受け取り、CalcLib ラッパーを介してネイティブ calc ライブラリを使用して計算を実行し、結果を出力するコマンドライン電卓です。
機能
- シンプルなコマンドラインインターフェース - 使いやすい電卓
- 4つの基本演算 - 加算、減算、乗算、除算
- ネイティブライブラリ統合 - ネイティブ calc ライブラリへの P/Invoke に CalcLib ラッパーを使用
- クロスプラットフォーム - Windows と Linux の両方で動作
- エラー処理 - 無効な入力と操作に対する適切なエラーメッセージ
要件
ビルド要件
- .NET SDK 9.0 以降
- CalcLib ライブラリ (自動的に参照される)
- ネイティブ calc ライブラリ (Linux では libcalc.so、Windows では libcalc.dll)
ランタイム要件
- .NET 9.0 ランタイム
- ネイティブ calc ライブラリが同じディレクトリまたはシステムライブラリパスに配置されていること
ビルド
# アプリケーションをビルド
cd prod/calc.net/src/CalcApp
make build
# ビルド成果物をクリーン
make clean
# NuGet パッケージを復元
make restore
使用方法
CalcApp <num1> <operator> <num2>
演算子
- + - 加算
- - - 減算
- x - 乗算
- / - 除算
例
# 加算
./CalcApp 10 + 20
# 出力: 30
# 減算
./CalcApp 15 - 5
# 出力: 10
# 乗算
./CalcApp 6 x 7
# 出力: 42
# 除算
./CalcApp 20 / 4
# 出力: 5
# 除算 (整数除算)
./CalcApp 10 / 3
# 出力: 3
# エラーケース - ゼロ除算
./CalcApp 10 / 0
# 出力: Error: calcHandler failed
# 終了コード: 1
コマンドライン引数
プログラムは正確に 3 つの引数を必要とします。
- num1 - 第 1 整数オペランド
- operator - 単一文字の演算子 (+, -, x, /)
- num2 - 第 2 整数オペランド
引数の検証
- 3 つすべての引数を提供する必要がある
- 演算子は正確に 1 文字である必要がある
- 第 1 引数と第 3 引数は有効な整数である必要がある
- 演算子は +, -, x, / のいずれかである必要がある
エラー処理
プログラムは成功または失敗に基づいて異なる終了コードを返します。
- 終了コード 0 - 成功
- 終了コード 1 - エラー (無効な引数、計算失敗など)
実装の詳細
アーキテクチャ
CalcApp (コンソールアプリ)
↓
CalcLib (ラッパーライブラリ)
↓
libcalc.so / libcalc.dll (ネイティブライブラリ)
プログラムフロー
- コマンドライン引数を解析
- 引数の数と形式を検証
- 文字列を整数に変換
- 演算子を CalcKind 列挙型にマッピング
- CalcLibrary.Calculate() を呼び出し
- 結果をチェックして値またはエラーを出力
- 適切な終了コードを返す
C 版との比較
.NET 版 (CalcApp) は、C 版 (calc) と同じ機能を提供します。
| 機能 | C 版 | .NET 版 |
| コマンドラインインターフェース | ✓ | ✓ |
| 4 つの基本演算 | ✓ | ✓ |
| エラー処理 | ✓ | ✓ |
| 終了コード | ✓ | ✓ |
| ネイティブライブラリ | 直接呼び出し | P/Invoke ラッパー |
| プラットフォームサポート | Windows/Linux | Windows/Linux |
| 整数解析 | atoi() | int.TryParse() |
| エラーメッセージ | fprintf(stderr) | Console.Error |
ビルドシステムとの統合
アプリケーションは既存の makefile ビルドシステムに統合されています。
# プロジェクトルートからビルド
cd prod/calc.net/src
make # CalcApp を含むすべてのアプリケーションをビルド
# CalcApp のみをビルド
cd prod/calc.net/src/CalcApp
make build
トラブルシューティング
ネイティブライブラリが見つからない
エラー:
Error loading native library
解決方法:
- ネイティブライブラリがビルドされていることを確認:
cd prod/calc/libsrc/calc
make build
- ライブラリが prod/calc/lib/ に存在することを確認
- Linux では LD_LIBRARY_PATH を設定:
export LD_LIBRARY_PATH=/path/to/c-modernization-kit/prod/calc/lib:$LD_LIBRARY_PATH
アプリケーションのビルドが失敗する
エラー:
Project reference not found
解決方法:
- 最初に CalcLib ライブラリをビルド:
cd prod/calc.net/libsrc/CalcLib
make build
- 次に CalcApp をビルド:
cd prod/calc.net/src/CalcApp
make build
ファイル
- Program.cs - メインアプリケーションロジック
- CalcApp.csproj - プロジェクト設定
- makefile - ビルド統合
- README.md - このドキュメント