C ソース コードを変更してコンソール実行可能ファイルをライブラリに変換するという特定のトピックについては、コマンド ライン アプリケーションがどのように分割されるかによって異なります。I/O が関数の小さなセット、またはさらに優れた関数ポインターに集中するように記述されている場合、明らかにそれは些細なことです。
printf、scanf、およびその仲間ですべてが完了している場合は、すべてのソースファイルに含まれるインクルードファイルを見つけて作成し、printf/scanf とその仲間を記述された独自の関数にリダイレクトするマクロを追加することで、おそらく最善の結果が得られるでしょう。 DLL の実装に対応できるようにします。printf のようなものは vsnprintf (安全のために n バージョンを使用) から構築できるため、C RTL I/O サブシステム全体を再実装する必要はありません。ただし、vsscanf はありませんが、Web 上にサードパーティの実装があります。
コードが fprintf や fscanf などを使用してファイルとコンソールの間の間接化を有効にしている場合でも、うまくいきません。FILE 構造は不透明であり、Pascal テキスト ファイルとは異なり、移植可能なテキスト ファイル ドライバーを実装することはできません。特定の C RTL を詳しく調べればまだ可能かもしれませんが、マクロ ルートをたどり、名前を変更した独自の FILE 型を再実装することをお勧めします。
最後に、「popen()」アプローチは Delphi で可能であり、Delphi 2009 では TTextReader クラスと TTextWriter クラスによって多少簡単になりました。これらをパイプに巻きつけたTFileStreamと組み合わせて、新しいプロセスでの標準入力、標準出力、標準エラーのパイプ、STARTF_USESTDHANDLESなどを指定すれば動作します。自分で作成したくない場合は、Web 上に Delphi 用のサードパーティ製の同等品/サンプルもあります。これが1つです。