On Wed Jun 29 10:38:07 BST 2011, Jarosław Białas wrote: > Recently I tried to use my c++ library in Python using SIP. > In SIP configuration file I added some extra libraries like QtGui,fftw3 > and ssl. > Compilation and linking pass without any warnings or errors: > > g++ -c -pipe -fPIC -O2 -Wall -W -DNDEBUG -I. -I/usr/include/python2.7 -o > sipmd5testcmodule.o sipmd5testcmodule.cpp > g++ -c -pipe -fPIC -O2 -Wall -W -DNDEBUG -I. -I/usr/include/python2.7 -o > sipmd5testmd5test.o sipmd5testmd5test.cpp > g++ -c -pipe -fPIC -O2 -Wall -W -DNDEBUG -I. -I/usr/include/python2.7 -o > md5test.o md5test.cpp > g++ -Wl,--hash-style=gnu -Wl,--as-needed -shared > -Wl,--version-script=md5test.exp -o md5test.so sipmd5testcmodule.o > sipmd5testmd5test.o md5test.o -lssl > > But when I try to import library: > ImportError: ./md5test.so: undefined symbol: MD5
It seems to me that your use of the MD5 function isn't resolved at run-time. Since you're building a library, the linker doesn't care because it expects that it will find that symbol later. > When I compiled my code and included it in c++ all worked fine. When you run ldd on the md5test.so file, what do you get as output? I get this: $ ldd md5test.so libssl.so.0.9.8 => /usr/lib/i686/cmov/libssl.so.0.9.8 (0xb776f000) libstdc++.so.6 => /usr/local/lib/libstdc++.so.6 (0xb7684000) libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0xb765e000) libgcc_s.so.1 => /usr/local/lib/libgcc_s.so.1 (0xb7640000) libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb74f1000) libcrypto.so.0.9.8 => /usr/lib/i686/cmov/libcrypto.so.0.9.8 (0xb73af000) libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb73ab000) libz.so.1 => /usr/lib/libz.so.1 (0xb7396000) /lib/ld-linux.so.2 (0xb77d2000) If the first line in your output indicates that libssl.so cannot be found then you may need to update your build file to add a suitable library path for that library. David _______________________________________________ PyQt mailing list PyQt@riverbankcomputing.com http://www.riverbankcomputing.com/mailman/listinfo/pyqt