Хорошо, я использую swig и VS2010 без проблем ...
В вашем случае это больше похоже на проблемы со связыванием.Помимо проверки библиотек, не забудьте проверить 32-64-битные библиотеки, которые вы связываете.Попробуйте связать все как цель x86 как отказоустойчивую.И не используйте AnyCpu .
Как использовать SWIG под VS2010.
позволяет определить, хотите ли вы получить mylib.pyИтак, вы создали некоторые файлы интерфейса SWIG с mylib.i в качестве «основного» файла.Я предполагаю, что у вас уже есть решение с проектом с вашими классами C ++.
(1) Сначала создайте проект C ++ для интерфейса SWIG.Используйте Visual C ++ -> проект библиотеки классов, который должен создать заглушку C ++ DLL.Я положил туда все .i файлы.И установите Visual Studio, чтобы выделить .i как .h - это удобно.
(1.1) Добавить файл mylib_wrap.cxx в проект (создать пустой файл, пока swig еще не создал его)
(2)
a) Нажмите правую кнопку над mylib.i, выберите свойства.
b) установите ItemType как «Инструмент пользовательской сборки».
В окне шага пользовательской сборки:
c) Поле командной строки должночто-то вроде:
echo In order to function correctly, please ensure the following environment variables are
correctly set:
echo PYTHON_INCLUDE: %PYTHON_INCLUDE%
echo PYTHON_LIB: %PYTHON_LIB%
echo on
C:\swig\swig.exe -c++ -python %(FullPath)
измените C: \ swig \ swig.exe на свой путь к SWIG
d) В поле Outputs:
$(InputName)_wrap.cxx
(3) Перейти к свойствам этого проекта:
a) Вкладка C ++ -> Дополнительные каталоги включения
добавить $ (PYTHON_INCLUDE);...
c) Linker -> Выходной файл
Path-You-Needed \ _ mylib.pyd
d) Linker -> Включить инкрементное связывание
, установленное как Нет (/ INCREMENTAL: NO)
e) Linker -> Ввод -> Дополнительные зависимости
add $ (PYTHON_LIB); ...
f) C / C ++ -> Предварительно скомпилированные заголовки : Отключите предварительно скомпилированные заголовки, установите ** Не использовать предварительно скомпилированные заголовки * и удалите файлы stdafx после
g) General tab.Просто убедитесь, что они установлены:
Тип конфигурации = Динамическая библиотека (.dll)
Набор символов = Использовать набор символов Unicode
Поддержка времени выполнения общего языка = Нет поддержки времени выполнения общего языка
Компилируется.
PS И не забудьте также установить переменные% PYTHON_INCLUDE% и% PYTHON_LIB% в вашей системе.