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