В чем разница между python3.lib и python3x.lib в папке установочных библиотек Python?

Я компилировал библиотеку C и связывал файлы lib Python3 для привязок Python. Я использовал файл python39.lib в качестве ссылки, но мне было интересно, в чем разница между «версионным» номером (например, python3x.lib) и неверсионным (python3.lib).

В ответ на вопрос забыл упомянуть, что это компиляция в Windows с использованием gcc.

Спасибо


person ArcJamMcE    schedule 27.01.2021    source источник
comment
Какая платформа? линукс? Окна? макос? Вы проверили, что одно не является ссылкой на другое?   -  person Matthieu Brucher    schedule 27.01.2021
comment
Платформа @MatthieuBrucher — это окна. Нет, не знаю, как определить, что одно связано с другим?   -  person ArcJamMcE    schedule 27.01.2021
comment
Я думаю, что ответ @yoonghm содержит то, что вам нужно.   -  person Matthieu Brucher    schedule 27.01.2021


Ответы (1)


python3.lib содержит только ключевые библиотечные функции, используемые программой cpython (или расширением C для Python). python3x.lib (например, python38.lib, python39.lib) содержит полные библиотечные функции. Вы должны установить ссылку на python3.lib, чтобы на конфигурацию вашей сборки не повлияло незначительное обновление версии Python, например, с 3.8 до 3.9.

Связывание очень зависит от платформы и компилятора. См. комментарий к коду в PC/pyconfig.h (см. ссылку [3]).

Дополнительная информация

  1. PEP384 — Связывание
  2. Вопрос Stackoverflow о том, как компоновщик MSVC ищет конкретную библиотеку отладки Python
  3. PC/pyconfig.h
person yoonghm    schedule 27.01.2021
comment
Нет ответа на python3x.lib в чем проблема? - person Matthieu Brucher; 27.01.2021
comment
Вопрос касается файла lib, поэтому в вашем ответе должен быть упомянут файл, а не ссылка, по которой автор может найти файл. - person Matthieu Brucher; 27.01.2021
comment
@yoonghm Это интересно, спасибо. Есть ли шанс, что у вас есть ссылка на источник, в котором я могу прочитать об этом? - person ArcJamMcE; 27.01.2021