Ошибка импорта Python: Символ, не найденный, но символ <s>, </s> *, не* существующий в файле

Я получаю эту ошибку, когда я пытаюсь импортировать ssrc.spread:

ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/ssrc/_spread.so, 2): Symbol not found: __ZN17ssrcspread_v1_0_67Mailbox11ZeroTimeoutE

Рассматриваемый файл (_spread.so) включает символ:

$ nm _spread.so | grep _ZN17ssrcspread_v1_0_67Mailbox11ZeroTimeoutE
     U __ZN17ssrcspread_v1_0_67Mailbox11ZeroTimeoutE
     U __ZN17ssrcspread_v1_0_67Mailbox11ZeroTimeoutE

(дважды, потому что файл является жиром ppc/x86 двоичный файл),

Править:

хорошо, как James указывает, U означает, что символ не определен, но необходим объектным файлом.

Еще с некоторым рытьем я заметил (где я должен был выглядеть первым...), эти ошибки компоновщика во время компиляции:

CC=g++ CXX=g++ g++-4.0 -arch ppc -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk -fno-strict-aliasing -fno-common -dynamic -DNDEBUG -O3 -I../.. -I../.. -I/usr/local/include -I/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6 -O2 -I/usr/local/include -std=c++98 -pipe -fno-gnu-keywords -fvisibility-inlines-hidden -o SsrcSpread.o -c SsrcSpread.cc
CC=g++ CXX=g++ /bin/sh ../../libtool --tag=CXX --mode=link g++-4.0 -arch ppc -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk -bundle -undefined dynamic_lookup -F/Library/Frameworks -framework Python \
  -pthread -D_REENTRANT -pedantic -Wall -Wno-long-long -Winline -Woverloaded-virtual -Wold-style-cast -Wsign-promo -L../../ssrc -lssrcspread -L/usr/local/lib -ltspread-core  -o _spread.so SsrcSpread.o
mkdir .libs
g++-4.0 -arch ppc -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk -bundle -undefined dynamic_lookup -F/Library/Frameworks -framework Python -pthread -D_REENTRANT -pedantic -Wall -Wno-long-long -Winline -Woverloaded-virtual -Wold-style-cast -Wsign-promo -o _spread.so SsrcSpread.o -Wl,-bind_at_load  -L/Dev/libssrcspread-1.0.6/ssrc /Dev/libssrcspread-1.0.6/ssrc/.libs/libssrcspread.a -L/usr/local/lib -ltspread-core  
ld: warning: in ~/Dev/libssrcspread-1.0.6/ssrc/.libs/libssrcspread.a, file was built for unsupported file format which is not the architecture being linked (ppc)
ld: warning: in /Developer/SDKs/MacOSX10.4u.sdk/usr/local/lib/libtspread-core.dylib, file was built for unsupported file format which is not the architecture being linked (ppc)
ld: warning: in /Dev/libssrcspread-1.0.6/ssrc/.libs/libssrcspread.a, file was built for unsupported file format which is not the architecture being linked (i386)
ld: warning: in /Developer/SDKs/MacOSX10.4u.sdk/usr/local/lib/libtspread-core.dylib, file was built for unsupported file format which is not the architecture being linked (i386)

Я также не совсем уверен, что 10.4 sdk являются правильным для компиляции модулей Python (но переключение на 10,6, казалось, не помогло).

1
задан James 7 June 2010 в 22:24
поделиться

1 ответ

$ nm _spread.so | grep _ZN17ssrcspread_v1_0_67Mailbox11ZeroTimeoutE
     U __ZN17ssrcspread_v1_0_67Mailbox11ZeroTimeoutE
     U __ZN17ssrcspread_v1_0_67Mailbox11ZeroTimeoutE

Файл _spread.so не включает символ, он зависит от него. U означает undefined.

Мне кажется, что где-то есть несоответствие версий, возможно, между заголовками и двоичными файлами библиотек. У вас установлено несколько версий?

2
ответ дан 3 September 2019 в 00:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: