Для конкретной темы превращения исполняемого файла консоли в библиотеку путем изменения исходного кода на языке C это зависит от того, как разложено приложение командной строки. Если он написан таким образом, что ввод / вывод направляется через небольшой набор функций или даже лучшие указатели на функции, то, очевидно, это будет тривиально.
Если все это сделано с printf, scanf и друзьями, то вам, вероятно, лучше всего найти / создать включаемый файл, включающий все исходные файлы, и добавить макрос, который перенаправляет printf / scanf и друзей на ваши собственные функции. которые написаны так, чтобы быть поддающимися реализации DLL. Такие вещи, как printf, могут быть построены из vsnprintf (используйте n-версию для безопасности), поэтому вам не нужно переопределять всю подсистему ввода / вывода C RTL. Однако vsscanf не существует, но в Интернете есть сторонние реализации.
Если код использует fprintf, fscanf и т. Д. Для включения косвенного обращения между файлами и консолью, вам все равно не повезло. Структура FILE непрозрачна, и в отличие от текстовых файлов Pascal, драйвер переносимого текстового файла не может быть реализован. Это все еще возможно, если вы запишите свой конкретный C RTL, но вам лучше посоветовать пойти по макро-маршруту и переопределить свой переименованный тип FILE.
Наконец, подход «popen ()» возможен в Delphi и несколько упрощен в Delphi 2009 с классами TTextReader и TTextWriter. Объедините их с TFileStream, обернутым вокруг каналов, и укажите каналы для стандартного ввода, стандартного вывода и стандартной ошибки в новом процессе, STARTF_USESTDHANDLES и т. Д., И это будет работать. Если вы не хотите писать свои собственные, есть и сторонние эквиваленты / примеры в сети для Delphi. Вот один.