// Имена файлов.
CHAR CPP_Name[]     = "Program.cpp"; 
CHAR DEF_Name[]     = "Program.def"; 

CHAR RC_Name[]      = "Resources\\Resources.rc";
CHAR RES_Name[]     = "Resources\\Resources.res";

CHAR OBJ_Name[]     = "Program.obj"; 
CHAR TGT_Name[]     = "Program.exe";

// Ключи компилятора.
CHAR Target[]       = "/Ge+ /Ss+";
CHAR Processor[]    = "/G5 /Gf+ /Gi+";
CHAR Stack_size[]   = "/B\"/ST:32768\"";
CHAR Optimization[] = "/Gs+ /O+ /Oi+";

/* * */

// Задаём параметры.
CHAR Compiler[] = "ICC.exe"; CHAR Parameters[MAXNAMEL] = "";

strcat (Parameters, Compiler);     strcat (Parameters, "|");
strcat (Parameters, Target);       strcat (Parameters, " ");
strcat (Parameters, CPP_Name);     strcat (Parameters, " ");
strcat (Parameters, DEF_Name);     strcat (Parameters, " ");
strcat (Parameters, Processor);    strcat (Parameters, " ");
strcat (Parameters, Stack_size);   strcat (Parameters, " ");
strcat (Parameters, Optimization); strcat (Parameters, "|");
strchg (Parameters, '|', 0x00);

// Удаляем файл, который требуется получить.
DosForceDelete (TGT_Name);

// Вызываем компилятор.
CHAR Error_string[MAXNAMEL] = ""; RESULTCODES Result_codes = {0};

DosResetBuffer (-1); DosExecPgm (Error_string, sizeof (Error_string), EXEC_SYNC,
                                 Parameters, NULL, &Result_codes,
                                 Compiler);

/* * */

// Задаём параметры для Resource Compiler.
// RC.exe - 16-разрядное приложение, и его надо вызвать как "Cmd /C RC.exe".
CHAR RC_starter[] = "Cmd.exe"; Parameters[0] = 0;

strcat (Parameters, RC_starter);   strcat (Parameters, "|");
strcat (Parameters, "/C RC.exe");  strcat (Parameters, " ");
strcat (Parameters, RC_Name);      strcat (Parameters, " ");
strcat (Parameters, TGT_Name);     strcat (Parameters, "|");
strchg (Parameters, '|', 0x00);

// Вызываем Resource Compiler.
Error_string[0] = 0; memset (&Result_codes, 0, sizeof (RESULTCODES));

DosResetBuffer (-1); DosExecPgm (Error_string, sizeof (Error_string), EXEC_SYNC,
                                 Parameters, NULL, &Result_codes,
                                 RC_starter);

// Удаляем временные файлы.
DosForceDelete (OBJ_Name); DosForceDelete (RES_Name);