Quindi la prima soluzione che vedo è quella di scrivere in .NET il codice della libreria C++. Con qualche adattamento avrai un solo codice in un solo linguaggio senza necessità di far comunicare nulla.

In realtà, non dovrebbe neanche essere necessaria una "comunicazione" tra i due programmi. Dovresti poter usare le funzioni della DLL all'interndo del programma .NET come se fossero delle API (te lo avevo gia' suggerito).

La strada della comunicazione via socket la vedo poco utile...