См. http://dotnetperls.com/dllimport-interop для примера взаимодействия, и эту статью MSDN для получения дополнительной информации. Библия для этого материала: книга Адама Натана .
В основном вам нужно будет определить функции в той DLL, которую вы хотите вызвать. Они должны быть отмечены с помощью extern, чтобы сделать их доступными для внешнего мира. Следующий шаг, который может оказаться сложным, - написание DllImport для функции. Это необходимо для сопоставления между управляемым и неуправляемым миром. Вам нужно будет разобраться, как преобразовать любые сложные структуры данных из DLL в управляемый код.
Вы должны проверить, есть ли какой-либо интерфейс COM к DLL. Убедитесь, что вам действительно нужно использовать P / Invoke.
SWIG изначально предназначался для переноса кода C / C ++ для использования на языках сценариев. Он генерирует код C # из описания интерфейса (см. учебник ). Я бы не рекомендовал использовать его из C #, если P / Invoke является опцией.