@AlexTeos

Как правильно статически прилинковать интерпретатор Python?

Передо мной стоит задача: есть некоторый 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.

В чем может быть причина?
  • Вопрос задан
  • 532 просмотра
Пригласить эксперта
Ответы на вопрос 1
@REDkiy
Рискну предположить что-то такое:
stackoverflow.com/questions/9826311/trying-to-unde...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы