Требование на сборку с той же версией MS VS
Требование на сборку с той же версией MS VS
В Python есть предупреждение, что модули на C лучше компилить с той же версией студии, которая используется для сборки самого Python. На самом деле компилить можно и MinGW и вроде работает, но не очень понятно откуда такое требование. Интересно откуда ноги растут и нет ли такого требования для плагинов Far?
- HaRT
- Moderator
- Posts: 10866
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Требование на сборку с той же версией MS VS
Это проистекает из желательности совпадения используемых версий C/C++ runtime library. Не буду вдаваться в технические подробности, но если не уделять этому вопросу должного внимания, можно получить всевозможные проблемы в работе приложения, из которых утечки памяти — самые безобидные.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Требование на сборку с той же версией MS VS
Так а почему в Far прокатывают .dll которые юзают разный C/C++ runtime, а в Python нет?
Я чего спрашиваю - тут ребята заморочились сделать совместимый MinGW - https://mingwpy.github.io/ - и я думал сравнить с Far, чтобы понять разницу. И Python и Far подгружают модули динамически.
Я чего спрашиваю - тут ребята заморочились сделать совместимый MinGW - https://mingwpy.github.io/ - и я думал сравнить с Far, чтобы понять разницу. И Python и Far подгружают модули динамически.
- HaRT
- Moderator
- Posts: 10866
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Требование на сборку с той же версией MS VS
Потому что в Фаре заморочились решением этого вопроса, а в Питоне нет. Чтобы отказаться от требования одинакового рантайма, требуется дополнительная проработка ABI и дополнительная дисциплина в его реализации на стороне подключаемых модулей.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Требование на сборку с той же версией MS VS
Главная разница в используемом рантайме.
В питоне используется DLL версия - рантайм в отдельной DLL.
В фар рантайм статически линкуется с каждым компонентом (хотя некоторые DLL писатели так не делают).
Получается больше независимости но и больше рантаймов вшитых в разные части ситемы
(в сам фар, + в каждый плагин со статической ликовкой).
В питоне используется DLL версия - рантайм в отдельной DLL.
В фар рантайм статически линкуется с каждым компонентом (хотя некоторые DLL писатели так не делают).
Получается больше независимости но и больше рантаймов вшитых в разные части ситемы
(в сам фар, + в каждый плагин со статической ликовкой).
- DrKnS
- Posts: 6114
- Joined: Thu 04 Aug, 2005 06:44
- Location: Kyiv
- Has thanked: 12 times
- Been thanked: 426 times
Требование на сборку с той же версией MS VS
Потому что в Far API не используются объекты и ресурсы стандартных библиотек C и C++.
Фару глубочайше фиолетово, чем там собран ваш плагин, статически или динамически, поскольку это никак не отражается на интерфейсе.
А если у вас в питоне, например, память выделяется в одном компоненте, а освобожается где-то в другом, или FILE* всякие передаются туда-сюда, то без одинакового рантайма будет ой, да.
Фару глубочайше фиолетово, чем там собран ваш плагин, статически или динамически, поскольку это никак не отражается на интерфейсе.
А если у вас в питоне, например, память выделяется в одном компоненте, а освобожается где-то в другом, или FILE* всякие передаются туда-сюда, то без одинакового рантайма будет ой, да.
Требование на сборку с той же версией MS VS
Это кое-что проясняет. Я глубоко не смотрел, но FILE* всякие в питоне по-ходу да, передаются. А Far что совсем без них живёт? Совсем никаких объектов шареных нету?