Может ли distutils использовать пользовательский файл .def для предоставления дополнительных символов при компиляции Windows .dll? - PullRequest
0 голосов
/ 25 февраля 2010

Я использую distutils для компиляции модуля расширения для Python, но вместо того, чтобы использовать Python C API, я использую ctypes для общения с результирующей общей библиотекой.

Это прекрасно работает в Linux, потому что автоматически экспортирует все символы в общей библиотеке, но в Windows distutils предоставляет .def для экспорта только функции инициализации модуля Python.

Как расширить distutils для предоставления моего .def в Windows, чтобы он экспортировал нужные мне символы?

1 Ответ

1 голос
/ 25 февраля 2010

Вы можете передать ['-Wl, - export-all-symbols'] как extra_link_args, если вы используете GCC Mingw.Вероятно, аналогичная настройка для Visual где-то в IDE.

Это работает, только если distutils решит использовать "gcc -mdll" в качестве компоновщика вместо "dllwrap".Это происходит, если ваша версия ld более поздняя, ​​чем 2.10.90, что должно быть в случае, если вы используете последнюю версию Mingw.Сначала это не работало для меня, потому что я использовал Python 2.2, у которого есть небольшая ошибка, связанная с анализом версии: он ожидает 3 числа, разделенных точкой, поэтому он возвращается к dllwrap, если версия ld - 2.20 ...

...