Thread overview
unresolved external symbol _d_throwc
Jan 18, 2016
Chris
Jan 18, 2016
David Nadlinger
Jan 18, 2016
Chris
Jan 18, 2016
Joakim
January 18, 2016
Hello

I downloaded LDC 17b1 to try and compile my little program with gtkd, under windows, 64 bits.

I compiled Gtkd 3.2.1 with this version of LDC and all went fine. Then I compiled my program and all went fine. However when it comes to linking I get these messages:

gtkdgl.lib(GLConfig_42_2e9.obj) : error LNK2019: unresolved external symbol _d_throwc referenced in function (mangled name) (glgdk.GLConfig.GLConfig glgdk.GLConfig.GLConfig.__ctor(gtkglc.glgdktypes.GdkGLConfigMode, gtkglc.glgdktypes.GdkGLConfigMode))
gtkdgl.lib(GLContext_43_378.obj) : error LNK2001: unresolved external symbol _d_throwc
gtkdgl.lib(GLWindow_71_30b.obj) : error LNK2001: unresolved external symbol _d_throwc

Searching for _d_throwc didn't yield any help, any ideas on how I could fix this?

FWIW, DMD2 works fine.

Thanks in advance.
January 18, 2016
Hi Chris,

On 18 Jan 2016, at 7:11, Chris via digitalmars-d-ldc wrote:
> gtkdgl.lib(GLConfig_42_2e9.obj) : error LNK2019: unresolved external symbol _d_throwc referenced in function (mangled name) (glgdk.GLConfig.GLConfig glgdk.GLConfig.GLConfig.__ctor(gtkglc.glgdktypes.GdkGLConfigMode, gtkglc.glgdktypes.GdkGLConfigMode))
> gtkdgl.lib(GLContext_43_378.obj) : error LNK2001: unresolved external symbol _d_throwc
> gtkdgl.lib(GLWindow_71_30b.obj) : error LNK2001: unresolved external symbol _d_throwc

_d_throwc is a symbol from DMD's druntime implementation. This means that you are most likely trying to link code compiled with LDC against code compiled with DMD (gtkdgl.lib). Since the two compilers are not ABI-compatible, this is not supported.

 — David
January 18, 2016
Indeed the gtkdgl lib was getting compiled by DMD for some reason, I got it working now. Thanks for the pointer.
January 18, 2016
On Monday, 18 January 2016 at 15:08:30 UTC, Chris wrote:
> Indeed the gtkdgl lib was getting compiled by DMD for some reason, I got it working now. Thanks for the pointer.

I highly recommend Dscanner for finding such D symbol definitions:

https://github.com/Hackerpilot/Dscanner/

It's the only D tool I built and keep lying around on my Android tablet, which I'm using for some development nowadays.  Running Dscanner on the ldc source on my tablet quickly found the file:

$ ./dscanner -d _d_throwc ldc/                                    
     ldc/runtime/druntime/src/rt/deh_win64_posix.d(217:17)