Как из exe собрать dll, имея сорсы?
На самом деле ничего сверхсложного в этом нету: открываете пример DLL (например этот), по образцу переписываете Main.cpp вашего приложения с нужными вам функциями и получаете то, что вам нужно. В VisualStudio создаете решение, в него добавляете оба проекта (так просто удобнее - пересобрал длл и её сразу можно юзать во втором проекте без дополнительных телодвижений), линкуете на билд dll и все связанное в основном проекте (C# который), далее в C# приложении делаете обертку для dll и используете её уже как надо.
Надо запускать ехе через функцию, а потом управлять вводом/выводом.
Как это сделать на с# не знаю, гуглите "как запускать сторонние приложения с#"