digitalmars.D.learn - Calling c shared library
Forgive my programming 101 question :)
I want to call a method from a precompiled shared library:
// c header
void f(void);
// my d file
extern(C) void f();
void main() {}
$ dmd mydfile.d
libphobos2.a(deh2_33a_525.o): In function  
`_D2rt4deh213__eh_finddataFPvZPS2rt4deh213DHandlerTable':
src/rt/deh2.d:(.text._D2rt4deh213__eh_finddataFPvZPS2rt4deh21
DHandlerTable+0x4):  
undefined reference to `_deh_beg'
src/rt/deh2.d:(.text._D2rt4deh213__eh_finddataFPvZPS2rt4deh21
DHandlerTable+0xc):  
undefined reference to `_deh_beg'
src/rt/deh2.d:(.text._D2rt4deh213__eh_finddataFPvZPS2rt4deh213
HandlerTable+0x13):  
undefined reference to `_deh_end'
src/rt/deh2.d:(.text._D2rt4deh213__eh_finddataFPvZPS2rt4deh213
HandlerTable+0x37):  
undefined reference to `_deh_end'
collect2: ld returned 1 exit status
--- errorlevel 1
Is there a way to do the above, or do I have to manually load the shared  
library and use alias'es for the functions?
 Mar 23 2012
On Fri, 23 Mar 2012 15:04:48 +0100, simendsjo <simendsjo gmail.com> wrote:
 Forgive my programming 101 question :)
 I want to call a method from a precompiled shared library:
 // c header
 void f(void);
 // my d file
 extern(C) void f();
 void main() {}
 $ dmd mydfile.d
 libphobos2.a(deh2_33a_525.o): In function  
 `_D2rt4deh213__eh_finddataFPvZPS2rt4deh213DHandlerTable':
 src/rt/deh2.d:(.text._D2rt4deh213__eh_finddataFPvZPS2rt4deh21
DHandlerTable+0x4):  
 undefined reference to `_deh_beg'
 src/rt/deh2.d:(.text._D2rt4deh213__eh_finddataFPvZPS2rt4deh21
DHandlerTable+0xc):  
 undefined reference to `_deh_beg'
 src/rt/deh2.d:(.text._D2rt4deh213__eh_finddataFPvZPS2rt4deh213
HandlerTable+0x13):  
 undefined reference to `_deh_end'
 src/rt/deh2.d:(.text._D2rt4deh213__eh_finddataFPvZPS2rt4deh213
HandlerTable+0x37):  
 undefined reference to `_deh_end'
 collect2: ld returned 1 exit status
 --- errorlevel 1
 Is there a way to do the above, or do I have to manually load the shared  
 library and use alias'es for the functions?
Stupidity has a new name, and it's simendsjo!
I actually had extern(C): at the top of my file, but extern(C) void main()  
was nowhere to be found :)
 Mar 23 2012








 
  
  
  simendsjo <simendsjo gmail.com>
 simendsjo <simendsjo gmail.com>