Re: [PyQt] [SIP]MD5 openssl
Hello again, In the case that somebody want to help me with that problem, I attached some files. import os import sipconfig # The name of the SIP build file generated by SIP and used by the build # system. build_file = md5test.sbf # Get the SIP configuration information. config = sipconfig.Configuration() # Run SIP to generate the code. os.system( .join([config.sip_bin, -c, ., -b, build_file, md5test.sip])) # Create the Makefile. makefile = sipconfig.SIPModuleMakefile(config, build_file) # Add the library we are wrapping. The name doesn't include any platform # specific prefixes or extensions (e.g. the lib prefix on UNIX, or the # .dll extension on Windows). makefile.extra_libs = [ssl] makefile._build['objects'] += md5test.o # Generate the Makefile itself. makefile.generate() #include openssl/md5.h #include md5test.h void md5test::hash() { unsigned char* hash; unsigned char* md; unsigned char* d; unsigned long n = 1; d = new unsigned char(1); *d = 123; hash = new unsigned char(16); md = new unsigned char(16); hash = MD5(d,n,md); } #include openssl/md5.h class md5test { public: void hash(); }; %Module md5test class md5test { %TypeHeaderCode #include iostream #include openssl/md5.h #include md5test.h %End public: void hash(); }; ___ PyQt mailing listPyQt@riverbankcomputing.com http://www.riverbankcomputing.com/mailman/listinfo/pyqt
Re: [PyQt] [SIP]MD5 openssl
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 (0xb764) 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 listPyQt@riverbankcomputing.com http://www.riverbankcomputing.com/mailman/listinfo/pyqt
Re: [PyQt] [SIP]MD5 openssl
I accidentally send below message only to David, repostion to groups. On 01.07.2011 19:57, David Boddie wrote: 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 (0xb764) 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 listPyQt@riverbankcomputing.com http://www.riverbankcomputing.com/mailman/listinfo/pyqt I have done everything like you do, but instead of that I get: $ ldd md5test.so linux-vdso.so.1 = (0x7e7cd000) libstdc++.so.6 = /usr/lib/libstdc++.so.6 (0x7fa458142000) libc.so.6 = /lib/libc.so.6 (0x7fa457de1000) libm.so.6 = /lib/libm.so.6 (0x7fa457b5e000) /lib/ld-linux-x86-64.so.2 (0x7fa45867b000) libgcc_s.so.1 = /usr/lib/libgcc_s.so.1 (0x7fa457948000) When I tried: $ g++ -fPIC -shared md5test.cpp -o md5test.so -lssl $ ldd md5test.so linux-vdso.so.1 = (0x7fffad5ff000) libssl.so.1.0.0 = /usr/lib/libssl.so.1.0.0 (0x7ff7cc347000) libstdc++.so.6 = /usr/lib/libstdc++.so.6 (0x7ff7cc03d000) libm.so.6 = /lib/libm.so.6 (0x7ff7cbdba000) libgcc_s.so.1 = /usr/lib/libgcc_s.so.1 (0x7ff7cbba4000) libc.so.6 = /lib/libc.so.6 (0x7ff7cb843000) libcrypto.so.1.0.0 = /usr/lib/libcrypto.so.1.0.0 (0x7ff7cb486000) libdl.so.2 = /lib/libdl.so.2 (0x7ff7cb282000) libz.so.1 = /usr/lib/libz.so.1 (0x7ff7cb06a000) /lib/ld-linux-x86-64.so.2 (0x7ff7cc7d1000) Then I realized that libcrypto is also linked to shared library. I add crypto to configuration file and despite the fact that libssl is still missing(I really don't know why), libcrypto is present. Finally I imported md5test successfully. Thank you for helping me again. ___ PyQt mailing listPyQt@riverbankcomputing.com http://www.riverbankcomputing.com/mailman/listinfo/pyqt
[PyQt] [SIP]MD5 openssl
Hello 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 When I compiled my code and included it in c++ all worked fine. ___ PyQt mailing listPyQt@riverbankcomputing.com http://www.riverbankcomputing.com/mailman/listinfo/pyqt