У меня есть приложение, которое статически ссылается на libpython.a
(2.7). Изнутри переводчика приложения я пытаюсь импортировать time
модуль (time.so
), который терпит неудачу с:Встроенный в приложение интерпретатор Python не загружает собственные модули
ImportError: ./time.so: undefined symbol: PyExc_IOError
Так, этот модуль имеет неразрешенные символы:
nm -D time.so | grep PyExc_IOError
U PyExc_IOError
Я понял, что этот символ отбрасывается компоновщик при связывании приложения. Хорошо, сейчас я связывая libpython
со всеми символами:
... -Wl,-whole-archive -lpython -Wl,-no-whole-archive ...
Символ сейчас:
$ nm app | grep PyExc_IOError
8638348 D PyExc_IOError
08638ca0 d _PyExc_IOError
Но я все еще получаю ту же ошибку импорта. В чем проблема?
Вы выполняете шаги в руководстве по внедрению? Компиляция с distutils? –
@ Эли, да, это прямо там. Моего внимания, связанного с гнатом, было недостаточно, чтобы сделать это до последнего абзаца. –