В прошлом я всегда писал .NET-оболочку для библиотек COM и C++ и помещал ее в свою собственную библиотеку классов.
Обертка может обрабатывать все вызовы interop в dll.
Он также позволяет выполнять преобразование данных и отчеты об ошибках, которые будут иметь смысл для обеих сторон (ваше приложение NET и COM DLL).
Я думаю, что это должно решить вашу проблему.
EDIT
На самом деле я думал, что дальше это и вышеописанный процесс не будет работать. Это связано с тем, что целевые процессоры X86, x64 и Itanium настолько принципиально отличаются друг от друга.
отредактирован x64 может работать x86 целенаправленные код и так может Itanium (который использовал эмулятор и теперь удлинительный EM64T)
Там больше информации here
То, что вы можете быть в состоянии сделать, хотя запускает вашу x86-dll в рамках отдельного процесса и реализует некоторую форму связи между ними. Думаю, именно поэтому вы упомянули WCF. Я говорю это, потому что программное обеспечение x86 должно работать в системе x64.
Это будет означать, что ваше решение будет иметь два исполняемых файла один x86 и один AnyCPU, поскольку сборку можно настроить только на один тип ЦП.
Почему вы не можете изменить свою основную программу для использования x86? Это ведь архетект, который будет использоваться на 32-битных машинах в любом случае. – Justin
См. Также http://stackoverflow.com/a/12938217/184528 – cdiggins