Das ist im Grunde das gleiche, auch von der Verwendung her. DllExport ist neuer, das Unmanaged Exports wird schon länger nicht mehr gepflegt, weshalb ich für neue Projekte das neuere empfehlen würde. Außerdem ist das durch den Wizard für die Projektkonfiguration sogar noch einfacher.
Was dein Angebot bzgl. deinen Ansatz mit DllExport betrifft, so wäre ich sehr interessiert.
Die Grundidee ist, dass man auf beiden Seiten je eine Klasse bereitstellt, die über eine exportierte Funktion verbunden werden. Dann fragt man an dieser Klasse ein Interface an, diese extrahiert die
GUID und fragt die jeweils andere Seite danach. Die liefert dann ein passendes IInterface zurück, das man dann mit Supports in den konkreten Typ casten kann.
Darüber kann man dann noch einen generischen Aufsatz schreiben, damit es einfach zu verwenden ist.
Diesen Ansatz habe ich nun schon dreimal entworfen und er wurde jedesmal besser.
Zuerst habe ich damit privat gespielt, aber das war nur ein Grundgerüst, dann habe ich es zweimal richtig für berufliche Zwecke implementiert, am Ende dann auch mit C#.