Re: [PyQt] [SIP]MD5 openssl

2011-07-01 Thread Jarosław Białas

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

2011-07-01 Thread David Boddie
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

2011-07-01 Thread Jarosław Białas

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

2011-06-29 Thread Jarosław Białas

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