Передо мной стоит задача: есть некоторый python скрипт, его необходимо использовать в DLL, при этом максимально минимизировать количество выходных файлов (желательно до одной dll).
Итак, сам python скрипт загружен в ресурсы проекта и выполняется с помощью Python/C API. Следующим шагом, хотелось бы интегрировать интерпретатор python в мою dll.
Для этого:
- Скачаны исходники("Решение") Python 2.7.11 с официального сайта
- Для компиляции выбран один проект - pythoncore
- В определениях препроцессора Py_ENABLE_SHARED заменен на Py_NO_ENABLE_SHARED
- Тип конфигурации изменен с DLL (динамическая библиотека) на LIB (статическая библиотека)
- Получившийся LIB файл добавлен в зависимости моего проекта
- Залинковал папку Include из исходников Python
- Копирую pyconfig.h из установленного python в папку Include
- Насколько мне известно, при компиляции моего проекта, статически прилинкованные библиотеки должны экспортировать свой код в прилинковавшую его библиотеку. Соответственно этот LIB файл (~15Mb!) полностью самодостаточный (как я понимаю).
Но при компиляции моего проекта я получаю ошибки:
Ошибка 3 error LNK2019: ссылка на неразрешенный внешний символ __imp__Py_Initialize в функции _main E:\7zip\myprogramm\myprogramm\main.obj
Объявление и исходный код этой функции присутствует в проекте - pythoncore.
Набор инструментов платформы в обоих проектах - v90. Среда Visual-Studio 2010. Оба проекты настроены на X86.
В чем может быть причина?