On Monday, 8 April 2013 at 04:16:20 UTC, Walter Bright wrote:
On 4/7/2013 6:14 PM, Ellery Newcomer wrote:
On Sunday, 7 April 2013 at 06:03:38 UTC, Walter Bright wrote:
On 4/6/2013 7:15 PM, Ellery Newcomer wrote:
dmd -unittest -fPIC -defaultlib=phobos2so -shared test1.d -oflibtest1.so gcc test1.c `pwd`/libtest1.so -L/usr/lib64/dmd/ -L/usr/lib/dmd/ -o test1.x
/lib64/libphobos2so.so: undefined reference to `_Dmain'
collect2: error: ld returned 1 exit status


_Dmain? wat?

_Dmain is the mangled name for main() in your program.

Yes, I know, but does it make sense to provide it when I call my shared lib from C?

Currently, I think you'll need a D main().

I think there is no need for D main and it can be fixed simply by defining _Dmain() in druntime. If user defines _Dmain() somewhere in his code, it would be caught by linker, if not the behavior would depend on druntime version. Advantage is that there would be no building errors (may be except when _deh_beg and _deh_end are required), the question is what to do in default version - silently ignore or throw error.

Reply via email to