Floating point not loaded

Clemens eriatarka84 at gmail.com
Tue Jun 22 01:04:03 PDT 2010


Clemens Wrote:

> I have a stupid problem linking D with C. This is with D 1.062, haven't tried D2. So say I have two files:
> 
> ------ cfmt.c --------
> 
> #include <string.h>
> 
> char* myfmt(double x)
> {
> 	static char buf[40];
> 	sprintf(buf, "%f", x);
> 	return buf;
> }
> 
> ------- test.d --------
> 
> extern(C) char* myfmt(double x);
> 
> void main()
> {
> 	myfmt(42.3);
> }
> 
> ---------------------------
> 
> and I compile and link them as follows:
> 
> > dmc -c cfmt.c
> > dmd test.d cfmt.obj
> > test.exe
> 
> I get the runtime error "Floating point not loaded". No exception or anything, the executable just terminates with that message on the terminal. I found a short paragraph about that runtime error on
> http://www.digitalmars.com/ctg/runtime.html
> but it wasn't too helpful; a quick grep showed me that _fltused occurs in both cfmt.obj and test.obj.
> 
> Anyone seen this before? What can I do? I'm pretty sure this used to work with an older version. The actual real-world use case is linking to Lua, which bombs out with the same message once you use the string concatenation operator with a numeric argument. I used the Lua binding from dsource which comes with a precompiled library, and just to be sure I then compiled my own version of Lua with dmc; to no avail.
> 
> Clemens

FWIW, I found a workaround to this: if I specify to link with snn.lib explicitly on the command line, then everything seems to work. I'm a bit surprised since I thought that snn.lib is pulled in automatically. Is this a bug in DMD, in Optlink, or by some strange twist of fate expected behavior?

Clemens


More information about the Digitalmars-d mailing list