Для моего последнего проекта, вот весь файл конфигурации C # SWIG:
%module mdProject
%{
#include "mdProject.h"
%}
Я скомпилировал его в SWIG с:
swig -csharp -c++ -I../../Include mdProject.i
Это сгенерировало Project.cxx, который я скомпилировал и связал непосредственно с «основной» DLL, поэтому мне не понадобилась вторая C ++ «вспомогательная» DLL. SWIG также сгенерировал кучу файлов C #, которые я скомпилировал в .NET DLL. Мои другие оболочки (Java, PHP и т. Д.) Используют вспомогательную DLL.
Как упомянул @patrick, SWIG использует P / Invoke, поэтому, если у вас возникла проблема с этим, вам нужно будет найти другое решение.
Если вы используете типы, отклоняющиеся от обычных (пустоты, структуры и т. Д.), Вам придется проделать дополнительную работу, чтобы сделать это правильно, но для среднего API с использованием int, char * и т. Д. Это нормально.