On Thursday, 10 July 2014 at 20:42:41 UTC, Pavel wrote:
Thank you very much for advice, it helped me :) Here is my build.sh file after all experiments:

#!/bin/sh
swig -php speedup.i
dmd -m64 -fPIC -c -L-shared speedup.d
sed -i "1i char* d_speedUp(char* arg1);" speedup_wrap.c
gcc `php-config --includes` -fpic -c speedup_wrap.c
dmd -m64 -shared -defaultlib=libphobos2.so -I/usr/lib/x86_64-linux-gnu speedup_wrap.o speedup.o -ofspeedup.so

Note that we need to insert d_speedUp() function definition in speedup_wrap.c file, otherwise there will be a warning "cast to pointer" and segmentation fault when using compiled speedup.so file:
speedup_wrap.c: In function ‘_wrap_d_speedUp’:
speedup_wrap.c:1141:12: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]

Also I found no mention about rt_term() method in generated files, so my php script works without it.
   result = (char *)d_speedUp(arg1);

Great! This information might be valuable for others. If you want and have the time, maybe you can write a short how-to article for the wiki?

http://wiki.dlang.org/Articles

Reply via email to