Как создать DLL с SWIG из Visual Studio 2010

Я несколько недель пытался заставить Microsoft Visual Studio 2010 создать DLL для меня с SWIG. Если вы уже прошли этот процесс, вы бы так любезны дать подробное пошаговое объяснение процесса? Я смотрел всюду онлайн и провел много часов, пытаясь это сделать; но все обучающие материалы, которые я нашел, устарели или плохо объяснены.

Мне удалось пройти этот процесс с помощью cygwin; но, как некоторые из вас знают, cygwin DLL не очень практична.

В результате у меня есть файлы .i,.cpp и .h, которые, как я знаю, могут создавать DLL вместе. Мне просто нужно знать, как это сделать с Visual Studio С++ 2010. Язык, на который я нацеливаюсь, - это Python.

Пожалуйста, не пересылайте меня на другой сайт; потому что есть вероятность, что я уже был там и пробовал это. Кроме того, пожалуйста, не вызывайте сомнительных комментариев, потому что очень важно, чтобы я работал над этим в ближайшем будущем.

Благодарим вас за вашу помощь заранее!

Ответы

Ответ 1

Пошаговые инструкции. Это предполагает, что у вас есть источник и выстраиваете единое расширение DLL, которое связывает источник напрямую с ним. Я не вернулся через него после создания рабочего проекта, поэтому я, возможно, что-то пропустил. Прокомментируйте этот пост, если вы застряли на шаге. Если у вас есть существующая DLL и вы хотите создать DLL-расширение Python, которое ее обертывает, эти шаги несколько отличаются. Если вам нужна помощь в этом комментарии к этому сообщению, я продолжу его.

Редактировать 8/19/2012. Если вы начинаете с примера C, не используйте -c++ на шаге 13 и используйте .c вместо .cxx для расширения файла переноса в шаги 14 и 19.

  • Запустите Visual Studio 2010
  • Файл, новый, проект из существующего кода...
  • Выберите тип проекта "Visual С++" и нажмите "Далее" .
  • Введите расположение файла проекта, где находятся файлы .cpp/.h/.i.
  • В поле "Имя проекта" выберите имя, используемое в выражении% module в файле .i(дело касается).
  • Выберите тип проекта "Проект динамически связанной библиотеки (DLL)" и нажмите "Далее" .
  • Добавить в поле "Включить поиск" путь к файлу Python.h, обычно что-то вроде "C:\Python27\include" и нажмите "Далее" .
  • Нажмите "Готово".
  • Щелкните правой кнопкой мыши проект в обозревателе решений, добавлении, существующем элементе... и выберите файл .i.
  • Щелкните правой кнопкой мыши файл .i, Свойства и выберите Конфигурация "Все конфигурации".
  • Измените тип элемента на "Custom Build Tool" и нажмите "Применить".
  • Выберите "Custom Build Tool" в свойствах (он появится после применения выше).
  • Введите командную строку "swig -С++ -python -outdir $(Outdir)% (Identity)" (это предполагает, что SWIG находится в вашем пути и перенаправляет сгенерированный .py файл в каталог Debug или Release по мере необходимости).
  • В выводах введите "% (имя файла) _wrap.cxx; $(Outdir)% (имя файла).py".
  • Нажмите "ОК".
  • Щелкните правой кнопкой мыши файл .i и выберите "Скомпилировать".
  • Щелкните правой кнопкой мыши проект, Добавить, Новый фильтр, назовите его "Сгенерированные файлы" .
  • Щелкните правой кнопкой мыши "Сгенерированные файлы" , выберите "Свойства" и установите "Файлы SCC" на "False" (если вы используете источник-контроль, это предотвратит попытку VS2010 проверять сгенерированные файлы в этом фильтре).
  • Щелкните правой кнопкой мыши "Сгенерированные файлы" , "Добавить", "Выход" и выберите файл _wrap.cxx, который был сгенерирован компиляцией.
  • Щелкните правой кнопкой мыши проект, Свойства.
  • Выберите Конфигурация "Все конфигурации".
  • Выберите Свойства конфигурации, Linker, General, Дополнительные библиотеки и добавьте путь к библиотекам python, обычно "C:\Python27\libs".
  • Выберите Свойства конфигурации, Общие и установите TargetName на "_ $(ProjectName)".
  • Установите целевое расширение на ".pyd".
  • Создайте версию проекта "Release". Вы не можете создать версию Debug, если вы не создадите отладочную версию самого Python.
  • Откройте консоль, перейдите в каталог выпуска проекта, запустите python, импортируйте свой модуль и вызовите функцию!