Я неделями пытался заставить Microsoft Visual Studio 2010 создать для меня DLL с помощью SWIG. Если вы уже прошли этот процесс, не могли бы вы дать подробное пошаговое объяснение процесса? Я искал повсюду в Интернете и потратил много-много часов, пытаясь сделать это; но все учебные пособия, которые я нашел, устарели или плохо объяснены.
Мне удалось пройти через этот процесс с помощью cygwin; но, как некоторые из вас знают, библиотека cygwin не очень практична.
В результате у меня есть файлы .i, .cpp и .h, которые, как я знаю, могут вместе создавать DLL. Мне просто нужно знать, как это сделать с помощью Visual Studio C ++ 2010. Я ориентируюсь на Python.
1 ответ
Пошаговая инструкция. Это предполагает, что у вас есть источник и вы создаете одно расширение DLL, которое напрямую связывает источник с ним. Я не возвращался к нему после создания рабочего проекта, так что, возможно, я что-то пропустил. Прокомментируйте этот пост, если вы застряли на ступеньке. Если у вас есть существующая DLL и вы хотите создать DLL-расширение Python, которое ее обертывает, эти шаги немного отличаются. Если вам нужна помощь с этим комментарием к этому посту, я его продлю.
Изменить 19.08.2012 : если вы начинаете с примера на C, не используйте -c++
на шаге 13 и используйте .c
вместо .cxx
для переноса. расширение файла на шагах 14 и 19.
- Запустите Visual Studio 2010
- Файл, новый, проект из существующего кода ...
- Выберите тип проекта «Visual C ++» и нажмите «Далее».
- Введите расположение файла проекта, в котором находятся файлы .cpp / .h / .i.
- В качестве имени проекта выберите имя, используемое в операторе% module в вашем файле .i (регистр имеет значение).
- Выберите тип проекта «Проект динамически подключаемой библиотеки (DLL)» и нажмите «Далее».
- Добавьте к включенным путям поиска путь к файлу Python.h, обычно что-то вроде «C: \ Python27 \ include», и нажмите «Далее».
- Щелкните Готово.
- Щелкните правой кнопкой мыши проект в обозревателе решений, «Добавить», «Существующий элемент ...» и выберите свой файл .i.
- Щелкните правой кнопкой мыши файл .i, "Свойства" и выберите "Конфигурация" Все конфигурации ".
- Измените тип элемента на «Custom Build Tool» и нажмите «Применить».
- Выберите «Custom Build Tool» в свойствах (он появится после «Применить» выше).
- Введите командную строку «swig -c ++ -python -outdir $ (Outdir)% (Identity)» (предполагается, что SWIG находится на вашем пути, и при необходимости перенаправляет сгенерированный файл .py в каталог Debug или Release).
- В поле «Вывод» введите «% (Имя файла) _wrap.cxx; $ (Outdir)% (Имя файла) .py».
- Щелкните ОК.
- Щелкните правой кнопкой мыши файл .i и выберите «Скомпилировать».
- Щелкните проект правой кнопкой мыши, «Добавить», «Новый фильтр», назовите его «Созданные файлы».
- Щелкните правой кнопкой мыши «Созданные файлы», выберите «Свойства» и установите для «Файлы SCC» значение «Ложь» (если вы используете систему управления версиями, это предотвращает попытку VS2010 проверить сгенерированные файлы в этом фильтре).
- Щелкните правой кнопкой мыши «Созданные файлы», «Добавить», «Выход из элемента» и выберите файл _wrap.cxx, созданный при компиляции.
- Щелкните проект правой кнопкой мыши, "Свойства".
- Выберите конфигурацию «Все конфигурации».
- Выберите «Свойства конфигурации», «Компоновщик», «Общие», «Дополнительные каталоги библиотек» и добавьте путь к библиотекам Python, обычно «C: \ Python27 \ libs».
- Выберите Configuration Properties, General и установите TargetName равным «_ $ (ProjectName)».
- Установите для целевого расширения значение «.pyd».
- Соберите «Релизную» версию проекта. Вы не можете создать отладочную версию, если не создадите отладочную версию самого Python.
- Откройте консоль, перейдите в каталог Release проекта, запустите python, импортируйте свой модуль и вызовите функцию!
Похожие вопросы
Связанные вопросы
Новые вопросы
c++
C++ — это язык программирования общего назначения. Изначально он разрабатывался как расширение C и имел аналогичный синтаксис, но теперь это совершенно другой язык. Используйте этот тег для вопросов о коде, который будет скомпилирован с помощью компилятора C++. Используйте тег версии для вопросов, связанных с конкретной стандартной версией [C++11], [C++14], [C++17], [C++20] или [C++23]. и т.д.