Есть много способов сделать это "взаимодействие" - однажды я выступил с докладом "взаимодействие с вращением головы". Ключ - это структура вашей родной DLL. Поскольку вы говорите, что он на C, есть вероятность, что он в идеальной форме для использования с PInvoke, который лучше всего работает с функциями C или функциями стиля C в C ++. Другие ответы имеют отличные указатели на синтаксис, и некоторые помогают объявить вашу функцию (и параметры, которые она принимает) на стороне C #.
Двумя другими основными опциями являются оболочка C ++ / CLI, хороший выбор, когда функции принимают много сложных типов, или COM, которые почти наверняка потребуют от вас изменить собственный код, так что это не очень подходит для этого. ситуация.